Elasticsearch可以建议查询数字字段的范围吗?

时间:2016-08-29 04:35:58

标签: elasticsearch

例如,我有一个拥有age财产的人员名单 在我的搜索页面上,我允许用户根据年龄范围查询此列表:

"mus" : {
    "range" : {
        "age" : { "from" : 60, "to" : 80 }
    }
},

假设上面的查询返回0结果(因为我的列表只包含20到50之间的人),ES支持任何方法来返回此范围查询的建议(在本例中为[20,50])?

1 个答案:

答案 0 :(得分:0)

是的,您可以使用histogram聚合来检索这些计数。

{
  "post_filter": {
    "bool": {
      "must": {
        "range": {
          "age": {
            "from": 60,
            "to": 80
          }
        }
      }
    }
  },
  "aggs": {
    "ages": {
      "histogram": {
        "field": "age",
        "interval": 10
      }
    }
  }
}

以上查询将返回:

  • age字段介于60到80之间的所有文档
  • age字段在10年桶内的文件数,即
    • 年龄介于10至20之间:4个文件(假号)
    • 年龄介于20至30之间:6个文件(假号)
    • 年龄介于30至40之间:12个文件(假号)
    • 年龄介乎40至50:2的文件(假号码)
    • ...