ElasticSearch - 具有范围的重要术语聚合

时间:2014-10-27 22:20:37

标签: elasticsearch aggregation nosql

我很想知道如何为重要的术语聚合查询添加范围。例如:

{
  "query": {
     "terms": {
         "text_content": [
             "searchTerm"
          ]
     },
"range": {
  "dateField": {
    "from": "date1",
    "to": "date2"
    }
  }
},
"aggregations": {
    "significantQTypes": {
         "significant_terms": {
             "field": "field1",
             "size": 10
      }
    }
 },
 "size": 0
}

不起作用。有关如何指定范围的任何建议吗?

1 个答案:

答案 0 :(得分:1)

不使用范围查询,而是使用范围过滤器,因为在您的情况下,相关性/得分似乎并不重要。

然后,为了将您的查询与range过滤器结合使用,您应该使用filtered查询(请参阅documentation)。

尝试这样的事情:

{
  "query": {
    "filtered": {
      "query": {
        "terms": {
          "text_content": [
            "searchTerm"
          ]
        }
      },
      "filter": {
        "range": {
          "dateField": {
            "from": "date1",
            "to": "date2"
          }
        }
      }
    }
  },
  "aggs": {
    "significantQTypes": {
      "significant_terms": {
        "field": "field1",
        "size": 10
      }
    }
  },
  "size": 0
}

希望这有帮助!