弹性搜索为列表

时间:2016-01-18 22:08:56

标签: elasticsearch

我试图在ES中找到一种方法,我可以为参数列表中的每个元素返回单个文档。例如,如果我有一个名为country的字段,并且我传入了几个国家/地区的列表,我想为每个国家/地区返回一个结果。

例如,如果我提供如下列表:

{“terms”:{“country”:['France','Spain','Germany']}}

我会收到一个结果,但只有一个结果。

2 个答案:

答案 0 :(得分:1)

您可以使用查询和聚合的组合。

GET /index/type/_search
{
"size": 0,
"query": {
  "terms": {
     "country":  ["France","Spain","Germany"] 
  }
},
"aggs": {
  "group_by_country": {
     "terms": {
        "field": "country",
        "size" :0 
     },
     "aggs":{
      "top_hits_country"   :{
       "top_hits"   :{
           "size":1
       }
      }
     }
    }
  }
 }

在汇总结果中,您将获得每个国家/地区的结果,因为我们在"size" :1中指定了"top_hits",您只能得到一个结果。

答案 1 :(得分:0)

您的问题可以通过多种方式解释 - 正如Paul Roub建议的那样,但我假设您正在寻找: