有多字段范围查询的缩写吗

时间:2019-06-24 14:21:57

标签: elasticsearch

我需要对多字段数据进行 range 查询。但是,每个字段都不应独立对待。例如,我有以下顺序:

(20, 20) > (10, 1) > (9, 9) > (9, 5) > (7, 10) > (5, 20)

问题Query in elasticsearch with multiple ranges on multiple datesElasticsearch date range query using two fields不相关,因为在我想查找所有文档的情况下 gt (7, 10)我将仅获得(20, 20)并丢失所有其他文档。

对于两字段情况,我可以编写以下查询:

# target query
GET /test/_search?pretty
{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "field1": {
              "gt": 7
            }
          }
        },
        {
          "bool": {
            "must": [
              {
                "term": {
                  "field1": 7
                }
              },
              {
                "range": {
                  "run": {
                    "field2": 10
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}

它看起来已经很笨拙,但是当需要更多字段时就变得不可能。

排序查询具有一种表格,可以根据需要对此类数据进行排序:

GET /test/_search?pretty
{
    "sort": [
        { "field1": { "order": "desc" }},
        { "field2": { "order": "desc" }}
    ]
}

所以问题是:

  • 是否有类似于 sort 查询的 target查询的简短形式?
  • 如果没有,是否有更好的方法可以对文档中的更多字段进行实施?

谢谢您的帮助!

0 个答案:

没有答案