Return 第一个 'term' 来自 Elasticsearch 中每个聚合的命中
Return first 'term' hit from each aggregation in Elasticsearch
使用 Elasticsearch 聚合,是否可以 return 仅从每个聚合中找到第一个匹配项?我没有在 Elastic 文档中找到此功能的详细信息。
{
took: 1,
timed_out: false,
_shards: {
total: 5,
successful: 5,
failed: 0
},
hits: {
total: 2,
max_score: 0.7380617,
hits: [
{},
{}
]
}
}
我使用 top_hits 聚合来确保每个聚合的第一个命中是相关的命中,所以如果我可以 return 只有每个聚合的第一个命中一个单独的列表。这完全可能吗,还是需要以编程方式遍历聚合查询结果?
执行聚合时,您希望检查结果中的 aggregations
json,而不是 hits
。由于您已经知道 Top hits Aggregation,请注意它提供了一个 size
选项,因此只需将其设置为 1
并且每个桶都会有一个命中。
在这个例子中,我通过索引中一个名为 catL1
的字段进行聚合,top-categories
是我为聚合选择的名称:
{
"aggs": {
"top-categories": {
"terms": {
"field": "catL1"
},
"aggs": {
"top-categories_hits": {
"top_hits": {
"size" : 1
}
}
}
}
}
}
现在我的结果是:
{
"took": 33,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1248280,
"max_score": 1,
"hits": [
...
]
},
"aggregations": {
"top-categories": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 217939,
"buckets": [
{
"key": "category1",
"doc_count": 412189,
"top-categories_hits": {
"hits": {
"total": 412189,
"max_score": 1,
"hits": [
ONLY_1_HIT
]
}
}
},
{
"key": "category2",
"doc_count": 3000189,
"top-categories_hits": {
"hits": {
"total": 3000189,
"max_score": 1,
"hits": [
ONLY_1_HIT
]
}
}
}
]
}
}
}
您可以看到有一个名为 aggregations
的 json,它每个桶只包含一个命中(我用占位符替换了命中)
编辑:
当然,您可能也对总数 hits
感兴趣,但我的意思是 aggregations
是您在此问题的上下文中要查找的内容
使用 Elasticsearch 聚合,是否可以 return 仅从每个聚合中找到第一个匹配项?我没有在 Elastic 文档中找到此功能的详细信息。
{
took: 1,
timed_out: false,
_shards: {
total: 5,
successful: 5,
failed: 0
},
hits: {
total: 2,
max_score: 0.7380617,
hits: [
{},
{}
]
}
}
我使用 top_hits 聚合来确保每个聚合的第一个命中是相关的命中,所以如果我可以 return 只有每个聚合的第一个命中一个单独的列表。这完全可能吗,还是需要以编程方式遍历聚合查询结果?
执行聚合时,您希望检查结果中的 aggregations
json,而不是 hits
。由于您已经知道 Top hits Aggregation,请注意它提供了一个 size
选项,因此只需将其设置为 1
并且每个桶都会有一个命中。
在这个例子中,我通过索引中一个名为 catL1
的字段进行聚合,top-categories
是我为聚合选择的名称:
{
"aggs": {
"top-categories": {
"terms": {
"field": "catL1"
},
"aggs": {
"top-categories_hits": {
"top_hits": {
"size" : 1
}
}
}
}
}
}
现在我的结果是:
{
"took": 33,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1248280,
"max_score": 1,
"hits": [
...
]
},
"aggregations": {
"top-categories": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 217939,
"buckets": [
{
"key": "category1",
"doc_count": 412189,
"top-categories_hits": {
"hits": {
"total": 412189,
"max_score": 1,
"hits": [
ONLY_1_HIT
]
}
}
},
{
"key": "category2",
"doc_count": 3000189,
"top-categories_hits": {
"hits": {
"total": 3000189,
"max_score": 1,
"hits": [
ONLY_1_HIT
]
}
}
}
]
}
}
}
您可以看到有一个名为 aggregations
的 json,它每个桶只包含一个命中(我用占位符替换了命中)
编辑:
当然,您可能也对总数 hits
感兴趣,但我的意思是 aggregations
是您在此问题的上下文中要查找的内容