如何获得每个值的至少1个文档?

时间:2017-12-20 11:12:25

标签: elasticsearch

我想获取每个" adminId"的列表1文档。我投入阵列。

这不是用户索引,因此每个用户都有多个文档。

这是我尝试的但是我得到了多个具有相同adminId的文档而有些文章丢失了:

ZoneInfo

如何告诉ES"为我给你的每个价值取一个至少1个文件"?

1 个答案:

答案 0 :(得分:0)

  

如何为每个给定的存储桶获取(任何)一个文档?

使用top hits aggregatn作为OP建议。

curl -H 'Content-Type: application/json' localhost:9200/myindex/_search?pretty  -d '
{
   "size": 0,
   "query": {
      "bool": {
         "must": {
            "terms": {
               "adminId": ["CA", "NY", "TX"]
            }
         }
      }
   },
   "aggs": {
      "aggregation_name_1": {
         "terms": {
            "size": 10000,
            "field": "adminId"
         },
         "aggs": {
            "aggregation_name_2": {
               "top_hits": {
                  "size": 1
               }
            }
         }
      }
   }
}
'

请注意

  • "size": 10000表示我们需要10000个桶的数据(不同的adminId值)。如果您有更多桶,请调整此值。

  • "size": 1表示每个存储桶,返回(任意)一个文档。