我有2个示例记录,如下所示:
{
"parents": [
{
"child": [
{
"is_deleted": false,
"child_id": -1,
"timestamp": 1483536052232
}
],
"parent_id": 810
},
{
"child": [
{
"is_deleted": true,
"child_id": 105,
"timestamp": 1483537567000
}
],
"parent_id": 42
}
]
},
{
"parents": [
{
"child": [
{
"is_deleted": false,
"child_id": 105,
"timestamp": 1483537567000
}
],
"parent_id": 42
}
]
}
和我的映射:
"properties": {
"parents": {
"type": "nested",
"properties": {
"parent_id": {
"type": "integer",
"doc_values": false
},
"child": {
"type": "nested",
"properties": {
"is_deleted": {
"type": "boolean",
"doc_values": false
},
"child_id": {
"type": "integer",
"doc_values": false
},
"timestamp": {
"type": "long",
"doc_values": false
}
}
}
}
}
我想按至少有一个带is_deleted
as的孩子的父母ID进行搜索false
。例如,如果我要查询父母ID为42,则我应该只获得第二个文档,而不是第一个。
您应该使用嵌套查询来查询嵌套字段。
这是一个示例,但是我不知道这是否是最好的解决方案,至少它是可行的:
POST /test1/test/_search
{
"query": {
"nested": {
"path": "parents",
"query": {
"bool": {
"must": [
{
"match": {
"parents.parent_id": 42
}
},
{
"nested": {
"path": "parents.child",
"query": {
"term": {
"parents.child.is_deleted": "F"
}
}
}
}
]
}
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句