ElasticSearch:按词条查找项目,如果不存在则将其忽略

时间:2019-04-07 09:26:40

标签: elasticsearch

我需要按几个字段过滤项目。每个字段必须等于value或不存在。可以使用以下代码来实现此过滤器,但是它不起作用:

new AuthUI.IdpConfig.GoogleBuilder().build()

是否可以实现类似的工作过滤器?

1 个答案:

答案 0 :(得分:2)

要检查某个字段是否存在任何值,可以使用exists query。由于要求字段具有特定值或字段没有值(等于字段必须不存在),因此使用bool query的查询将如下所示:

{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "$parentId": 1111
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "color.keyword": 111
                }
              },
              {
                "bool": {
                  "must_not": {
                    "exist": {
                      "field": "color.keyword"
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "size.keyword": 111
                }
              },
              {
                "bool": {
                  "must_not": {
                    "exist": {
                      "field": "size.keyword"
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

这个想法是should需要具有两个期望的条件-完全满足条件或字段不存在。 should查询可确保从查询数组中至少匹配一个条件。