如何获得每个值至少1个文档? [英] How to get at least 1 document of each values?

查看:29
本文介绍了如何获得每个值至少1个文档?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从数组1中获取每个"adminId"的文档.

I would like to fetch at list 1 document for each "adminId" i put into the array.

这不是用户索引,因此我为每个用户有多个文档.

This is not a user index so i have multiple documents for each user.

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

Here is what i tried but i get multiple documents with the same adminId and some are missing:

{
  size: 10,
  query: {
    bool: {
      must: [
        {
          terms: {
            adminId: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
          }
        }
      ]
    }
  }
}

如何告诉ES我为您提供的每个值至少获取1个文档"?

How to tell ES "fetch a least 1 document for each value i am giving you"?

推荐答案

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

使用如操作建议所建议,总热门匹配 .

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": 10000 means we want data for 10000 buckets (distinct adminId values). Adjust this value if you have more buckets.

"size":1 表示对于每个存储段,返回(任意)一个文档.

"size": 1 means for every bucket, return (any) one document.

这篇关于如何获得每个值至少1个文档?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆