在所有这些情况下,所选择的术语不仅仅是集合中最受欢迎的术语。它们是在前景集和背景集之间测量的受欢迎程度发生重大变化的术语。如果术语"H5N1"仅存在于1000万个文档索引中的5个文档中,但在构成用户搜索结果的100个文档中的4个文档中找到,则该文档非常重要并且可能与他们的搜索非常相关。5/10,000,000 与 4/100 的频率有很大的波动。
请求示例:
GET /_search
{
"query": {
"terms": { "force": [ "British Transport Police" ] }
},
"aggregations": {
"significant_crime_types": {
"significant_terms": { "field": "crime_type" }
}
}
}
搜索英国交通警察中的相关犯罪类型;
返回:
{
...
"aggregations": {
"significant_crime_types": {
"doc_count": 47347,
"bg_count": 5064554,
"buckets": [
{
"key": "Bicycle theft",
"doc_count": 3640,
"score": 0.371235374214817,
"bg_count": 66799
}
...
]
}
}
}
其中自行车盗窃最频繁;
注意到此聚合有如下限制:
与terms聚合不同,目前无法使用脚本生成的术语进行计数。由于significant_terms聚合必须同时考虑前台和背景频率,因此在整个索引上使用脚本来获取背景频率进行比较的成本高得令人望而却步。此外,由于类似的原因,不支持将 DocValues 作为术语数据源。
目前不支持将浮点域作为significant_terms分析的主题。虽然整数或长字段可用于表示银行帐号或类别号等概念,这些概念可能很有趣,但浮点字段通常用于表示某些内容的数量。因此,单个浮点项对于这种形式的频率分析没有用处。
如果存在查询等效项或没有提供索引子集的查询条件,则不应将significant_terms聚合用作最顶层的聚合 - 在这种情况下,前台集与背景集完全相同,因此在要观察的文档频率和从中提出合理建议的频率没有差异。
significant terms
聚集类似,significant text
聚集在前端数据集和后端数据集上执行词频统计分析GET news/_search
{
"query": {
"match": { "content": "Bird flu" }
},
"aggregations": {
"my_sample": {
"sampler": {
"shard_size": 100
},
"aggregations": {
"keywords": {
"significant_text": { "field": "content" }
}
}
}
}
}
在新闻文档中搜索含有禽流感的内容,并将结果中的content字段内容进行词频分析
返回示例:
{
"took": 9,
"timed_out": false,
"_shards": ...,
"hits": ...,
"aggregations" : {
"my_sample": {
"doc_count": 100,
"keywords" : {
"doc_count": 100,
"buckets" : [
{
"key": "h5n1",
"doc_count": 4,
"score": 4.71235374214817,
"bg_count": 5
}
...
]
}
}
}
}
结果表明,"h5n1"是与禽流感密切相关的几个术语之一。它在整个索引中只出现了5次(bg_count=5),但其中4次(doc_count=4)幸运地出现在我们的100个"禽流感"结果文件样本中。这表明了一个重要的单词,用户可以将其添加到他们的搜索中。
bg_count 当下文档总个数
doc_count 搜索结果集中出现的个数
限制:
此聚合下,不支持子聚合
与其他聚合不同,您可以使用聚合有效地对多级聚合中的所有存储桶进行分页。此聚合提供了一种流式传输特定聚合的所有存储桶的方法,类似于滚动对文档执行的操作。multi-bucket
composite
复合存储桶是根据为每个文档提取/创建的值的组合构建的,并且每个组合都被视为复合存储桶。
参数支持: