我们有一个用户索引,例如
{
"name": "Eli",
"cars": [
{ "model": "Honda", "color": "Red" },
{ "model": "Honda", "color": "Blue" },
{ "model": "Toyota", "color": "Red" }
]
}
{
"name": "Don",
"cars": [
{ "model": "Honda", "color": "Blue" },
{ "model": "Honda", "color": "Black" },
{ "model": "Toyota", "color": "Red" }
]
}
我们试图检索所有用户与红色本田,但我们找不到一个方法来做它在ElasticSearch
因为我不知道你使用的是哪个elasticsearch版本,我引用的是当前。
你正在看的是以下内容:
https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-objects.html和https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-mapping.html和https://www.elastic.co/guide/en/elasticsearch/guide/current/nested-query.html
使用嵌套映射,您可以创建如下查询:{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "cars",
"query": {
"bool": {
"must": [
{
"term": {
"cars.model": "honda"
}
},
{
"term": {
"cars.color": "red"
}
}
]
}
}
}
}
]
}
}
}
链接到示例:https://www.found.no/play/gist/91c5a6c8c9fe81928b1cc497f8740a3f(单击run)
请注意,这只在使用嵌套对象时有效!映射必须知道这个