弹性搜索,对对象数组进行布尔查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹性搜索,对对象数组进行布尔查询相关的知识,希望对你有一定的参考价值。
文档具有这样的字段。
"device_versions": [
{
"name": "android",
"min_major_ver": 3,
"min_minor_ver": 54,
"min_patch_ver": 0
},
{
"name": "ios",
"min_major_ver": 2,
"min_minor_ver": 59,
"min_patch_ver": 0
}
]
我想写这样的查询
((device_versions.name ='android'AND device_versions.min_major_ver = 3 AND device_versions.min_minor_ver = 55)] >>
我写了以下查询-
"must": [ { "term": { "device_versions.name": "android" } }, { "range": { "device_versions.min_major_ver": { "from": 3, "include_lower": true, "include_upper": true, "to": null } } }, { "range": { "device_versions.min_minor_ver": { "from": 55, "include_lower": true, "include_upper": true, "to": null } } } ]
上述查询的问题是:最后一个范围查询与设备名称为'ios'的数组元素匹配
我需要的是:在同一数组元素上应用3个条件。设备=“ android”且min_major_ver = 55 AND min_minor_ver = 55
该文档具有这样的字段。 “ device_versions”:[{“ name”:“ android”,“ min_major_ver”:3,“ min_minor_ver”:54,“ ...
答案
您的映射应启用嵌套,否则您的对象将被展平
以上是关于弹性搜索,对对象数组进行布尔查询的主要内容,如果未能解决你的问题,请参考以下文章