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

回到顶部