如何获得每个值至少1个文档? [英] How to get at least 1 document of each values?
问题描述
我想从数组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 for10000
buckets (distinctadminId
values). Adjust this value if you have more buckets.
"size":1
表示对于每个存储段,返回(任意)一个文档.
"size": 1
means for every bucket, return (any) one document.
这篇关于如何获得每个值至少1个文档?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!