Elasticsearch 2.4,存在过滤器,无法使用嵌套对象

时间:2016-12-21 12:18:20

标签: elasticsearch elasticsearch-2.0 elasticsearch-dsl

我的映射是:

"properties": {
  "user": {
    "type": "nested",
    "properties": {
      "id": {
        "type": "integer"
      },
      "is_active": {
        "type": "boolean",
        "null_value": false
      },
      "username": {
        "type": "string"
      }
    }
  },

我希望获得所有没有user字段的文档。

我试过了:

GET /index/type/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "user"
          }
        }
      ]
    }
  }
}

返回所有文件。 基于ElasticSearch 2.x exists filter for nested field doesn't work,我也尝试过:

GET /index/type/_search
{
  "query": {
    "nested": {
      "path": "user",
      "query": {
        "bool": {
          "must_not": [
            {
              "exists": {
                "field": "user"
              }
            }
          ]
        }
      }
    }
  }
}

返回0个文件。

使所有文档遗漏user字段的正确查询是什么?

2 个答案:

答案 0 :(得分:5)

我找到了正确的语法,应该是:

android.widget.SearchView

答案 1 :(得分:0)

尝试使用用户的父级,此处为 obj

GET users/users/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "obj.user"
          }
        }
      ]
    }
  }
}