如何在Elasticsearch中将术语过滤器与缺少的过滤器结合起来?

时间:2016-01-05 18:36:05

标签: elasticsearch

我们正在使用Elasticsearch 1.6,我有一个有效的三项查询,我需要使用独立的工作缺失过滤器进行修改。这是当前的代码:

包含三个条目的原始术语查询

GET ...
{
  "query": {
    "nested": {
      "path": "MAIN_FIELD",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "MAIN_FIELD.ID": 1234
              }
            },
            {
              "term": {
                "MAIN_FIELD.OTHER_IND": "false"
              }
            },
            {
              "term": {
                "MAIN_FIELD.INDICATOR": "Y"
              }
            }
          ]
        }
      }
    }
  }

}

单独缺少查询:

GET ...
{
    "query" : {
        "filtered" : {
            "filter" : {
                "missing" : { "field" : "MAIN_FIELD.OTHER_IND" }
            }
        }
    }
}

如何更改第一个查询中的术语查询:

"term": {
           "MAIN_FIELD.OTHER_IND": "false"
        }  

使用丢失的过滤器?

1 个答案:

答案 0 :(得分:1)

我认为你想要的是:

{
   "query": {
      "nested": {
         "path": "MAIN_FIELD",
         "query": {
            "bool": {
               "must": [
                  {
                     "term": {
                        "MAIN_FIELD.ID": 1234
                     }
                  },
                  {
                     "filtered": {
                        "filter": {
                            "missing": {
                               "field": "MAIN_FIELD.OTHER_IND"
                            }
                        }
                     }
                  },
                  {
                     "term": {
                        "MAIN_FIELD.INDICATOR": "Y"
                     }
                  }
               ]
            }
         }
      }
   }
}