在弹性搜索中结合缺少的术语过滤器和范围检查

时间:2016-04-05 02:41:15

标签: java elasticsearch

在查询中将范围过滤器和缺失过滤器组合在一起时,我得到零结果。查询如下。我只是在将缺失和范围组合在一起时才能解决这个问题。 在更正查询或代码时,可以获得任何帮助。我是弹性搜索1.7.3版本。

 {
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [
            {
              "bool": {
                "should": {
                  "missing": {
                    "field": "OrderData.XXXX.XXXXQueue"
                  }
                }
              }
            },
            {
              "range": {
                "OrderData.XXXX.priority": {
                  "from": 1,
                  "to": 5,
                  "include_lower": true,
                  "include_upper": true
                }
              }
            }
          ]
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

此查询能否为您提供预期的结果?

 {
      "query": {
        "filtered": {
          "query": {
            "match_all": {}
          },
          "filter": {
            "bool": {
              "must": {
                "bool": {
                  "should": [{
                    "missing": {
                      "field": "OrderData.XXXX.XXXXQueue"
                    }
                  }, {
                    "range": {
                      "OrderData.XXXX.priority": {
                        "from": 1,
                        "to": 5,
                        "include_lower": true,
                        "include_upper": true
                      }
                    }
                  }]
                }
              }
            }
          }
        }
      }
    }