ElasticSearch 2.x 存在嵌套字段的过滤器不起作用
ElasticSearch 2.x exists filter for nested field doesn't work
我有以下映射
{
"properties": {
"restaurant_name": {"type": "string"},
"menu": {
"type": "nested",
"properties": {
"name": {"type": "string"}
}
}
}
}
我正在尝试过滤所有具有可选 "menu" 字段的文档
GET /restaurnats/_search
{
"filter": {
"query": {
"bool": {
"must": [
{"exists" : { "field" : "menu" }}
]
}
}
}
}
但是,当我尝试使用相同的查询来过滤那些具有 "restaurant_name" 的文档时,它工作正常。那么为什么嵌套字段检查不起作用?如何让它发挥作用?
您需要改用 nested
查询:
{
"filter": {
"query": {
"nested": {
"path": "menu",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "menu"
}
}
]
}
}
}
}
}
}
我有以下映射
{
"properties": {
"restaurant_name": {"type": "string"},
"menu": {
"type": "nested",
"properties": {
"name": {"type": "string"}
}
}
}
}
我正在尝试过滤所有具有可选 "menu" 字段的文档
GET /restaurnats/_search
{
"filter": {
"query": {
"bool": {
"must": [
{"exists" : { "field" : "menu" }}
]
}
}
}
}
但是,当我尝试使用相同的查询来过滤那些具有 "restaurant_name" 的文档时,它工作正常。那么为什么嵌套字段检查不起作用?如何让它发挥作用?
您需要改用 nested
查询:
{
"filter": {
"query": {
"nested": {
"path": "menu",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "menu"
}
}
]
}
}
}
}
}
}