Elastic Search嵌套对象查询
我有一个如下所示的elasticsearch索引集合,
"_index":"test","_type":"abc",
"_source":{
"file_name":"xyz.ex"
"metadata":{
"format":".ex"
"profile":[
{"date_value" : "2018-05-30T00:00:00",
"key_id" : "1",
"type" : "date",
"value" : [ "30-05-2018" ]
},
{
"key_id" : "2",
"type" : "freetext",
"value" : [ "New york" ]
}
}
现在,我需要通过匹配key_id
其值来搜索文档。(key_id
是一些字段,其值存储在其中"value"
)对于key_id='1'
字段,如果value
= "30-05-2018"与上面的文档匹配。
我尝试将其映射为嵌套对象,但是无法编写查询来搜索2个或更多key_id
匹配其各自值的查询。
回答:
这就是我要做的。您需要通过bool/filter
(或bool/must
)两个嵌套查询对每个条件对进行AND
运算,因为您要匹配同一父文档中的两个不同的嵌套元素。
{ "query": {
"bool": {
"filter": [
{
"nested": {
"path": "metadata.profile",
"query": {
"bool": {
"filter": [
{
"term": {
"metadata.profile.f1": "a"
}
},
{
"term": {
"metadata.profile.f2": true
}
}
]
}
}
}
},
{
"nested": {
"path": "metadata.profile",
"query": {
"bool": {
"filter": [
{
"term": {
"metadata.profile.f1": "b"
}
},
{
"term": {
"metadata.profile.f2": false
}
}
]
}
}
}
}
]
}
}
}
以上是 Elastic Search嵌套对象查询 的全部内容, 来源链接: utcz.com/qa/407043.html