采样器聚合
编辑采样器聚合编辑
一种过滤聚合,用于将任何子聚合的处理限制为得分最高的文档样本。
用例示例
- 将分析的重点缩小到高度相关的匹配项,而不是可能非常长的低质量匹配项
- 降低可以仅使用样本产生有用结果的聚合的运行成本,例如
significant_terms
示例
在 StackOverflow 数据中对热门术语 javascript
或较罕见的术语 kibana
进行查询将匹配许多文档 - 其中大多数文档缺少单词 Kibana。为了将 significant_terms
聚合的重点放在更有可能匹配查询中最有趣部分的得分最高的文档上,我们使用了一个样本。
response = client.search( index: 'stackoverflow', size: 0, body: { query: { query_string: { query: 'tags:kibana OR tags:javascript' } }, aggregations: { sample: { sampler: { shard_size: 200 }, aggregations: { keywords: { significant_terms: { field: 'tags', exclude: [ 'kibana', 'javascript' ] } } } } } } ) puts response
POST /stackoverflow/_search?size=0 { "query": { "query_string": { "query": "tags:kibana OR tags:javascript" } }, "aggs": { "sample": { "sampler": { "shard_size": 200 }, "aggs": { "keywords": { "significant_terms": { "field": "tags", "exclude": [ "kibana", "javascript" ] } } } } } }
响应
{ ... "aggregations": { "sample": { "doc_count": 200, "keywords": { "doc_count": 200, "bg_count": 650, "buckets": [ { "key": "elasticsearch", "doc_count": 150, "score": 1.078125, "bg_count": 200 }, { "key": "logstash", "doc_count": 50, "score": 0.5625, "bg_count": 50 } ] } } } }
如果没有 sampler
聚合,则请求查询会考虑低质量匹配项的完整“长尾”,因此会识别不太重要的术语,例如 jquery
和 angular
,而不是关注更有洞察力的 Kibana 相关术语。
response = client.search( index: 'stackoverflow', size: 0, body: { query: { query_string: { query: 'tags:kibana OR tags:javascript' } }, aggregations: { low_quality_keywords: { significant_terms: { field: 'tags', size: 3, exclude: [ 'kibana', 'javascript' ] } } } } ) puts response
POST /stackoverflow/_search?size=0 { "query": { "query_string": { "query": "tags:kibana OR tags:javascript" } }, "aggs": { "low_quality_keywords": { "significant_terms": { "field": "tags", "size": 3, "exclude": [ "kibana", "javascript" ] } } } }
响应
{ ... "aggregations": { "low_quality_keywords": { "doc_count": 600, "bg_count": 650, "buckets": [ { "key": "angular", "doc_count": 200, "score": 0.02777, "bg_count": 200 }, { "key": "jquery", "doc_count": 200, "score": 0.02777, "bg_count": 200 }, { "key": "logstash", "doc_count": 50, "score": 0.0069, "bg_count": 50 } ] } } }
shard_size编辑
shard_size
参数限制在每个分片上处理的样本中收集多少个得分最高的文档。默认值为 100。