使用Elasticsearch聚合,是否可以只返回每个聚合的第一次命中?我没有在弹性文档中找到详细的此功能。
{
took: 1,
timed_out: false,
_shards: {
total: 5,
successful: 5,
failed: 0
},
hits: {
total: 2,
max_score: 0.7380617,
hits: [
{},
{}
]
}
}
我使用top\u hits聚合来确保每个聚合的第一次命中是相关的命中,因此如果我可以在单独的列表中只返回每个聚合的第一次命中,那就太好了。这是可能的,还是需要通过编程方式循环聚合查询结果?
当您执行聚合时,您希望检查结果中的聚合
json,而不是命中
。由于您已经知道Top命中聚合,请注意它提供了一个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
]
}
}
}
]
}
}
}
您可以看到,有一个名为聚合的json,它每个bucket只包含一个命中(我用占位符替换了命中)
编辑:当然,您可能也对总的点击
感兴趣,但我的意思是聚合
是您在这个问题的上下文中寻找的
问题内容: 我正在尝试使用以下查询对以下数据进行elasticsearch来执行术语聚合,输出将名称分解为标记(请参见下面的输出)。因此,我尝试将os_name映射为multi_field,但现在无法通过它查询。是否可以有没有令牌的索引?例如“ Fedora Core”? 查询: 数据: 输出: 映射: 问题答案: 实际上,您应该像这样更改映射 并且您的aggs应该更改为:
问题内容: 如何编写一个将整个字段值而不是单个标记考虑在内的ElasticSearch术语聚合查询?比如,我想通过城市名聚集,但下面的回报,,并作为单独的水桶,不和的水桶预期。 问题答案: 您应该在映射中解决此问题。添加一个not_analyzed字段。如果您还需要分析的版本,则可以创建多字段。 现在在city.raw上创建聚合
问题内容: 我想过滤出字段“ A”等于“ a”的文档,并且我想同时考虑字段“ A”,当然不包括先前的过滤器。我知道您可以将过滤器“置于查询之外”,以便在不应用该过滤器的情况下获得构面,例如: elasticsearch 单反 这非常好,但是如果我有多个滤镜和构面,每个滤镜和构面应该互相排斥,会发生什么?例: 也就是说,对于方面AI,希望保留除A:a以外的所有过滤器,对于方面B希望保留除B:b以外的
我想过滤掉字段'a'等于'a'的文档,同时我想对字段'a'进行刻面处理,当然不包括前面的过滤器。我知道您可以将筛选器放在查询的“外部”,以便在不应用该筛选器的情况下获得方面,例如: 弹性搜索 索尔尔 也就是说,对于方面A,我希望保留除A:A以外的所有过滤器,对于方面B,我希望保留除B:B以外的所有过滤器,以此类推。最明显的方法是执行n个查询(n个方面中的每一个),但我不想这样做。
这个问题不是如何通过多个字段进行聚合,我们可以使用子聚合。 如果你知道SQL,我可以给你一个完美的解释: 我们能在Elasticsearch中实现这一点吗? 谢谢。
此处为elasticsearch新用户,但存在术语聚合问题。我为187份文档编制了索引,其中包含“名称”、“主机”、“风险”等字段。字段风险有4个唯一值(“关键”、“高”、“中”、“低”、“信息”),我正在运行这样的术语聚合: 我希望得到一个结果,说明我有x个临界值,x个高值等等。问题是,我没有得到返回的桶。 我的Elasticsearch版本是7.12.0有什么想法吗 > 编辑:这是映射: 以下