【发布时间】:2013-04-19 06:54:22
【问题描述】:
我目前有一个术语方面,它使用 exclude 选项从结果中排除某些术语。我对 term_stats 方面进行了相同的尝试,但没有丢弃相同的结果。
我查看了 Elasticsearch 文档 (http://www.elasticsearch.org/guide/reference/api/search/facets/terms-stats-facet/),发现 term_stats 方面似乎没有排除选项。因为我并不总是相信我对 elasticsearch 文档的完整解释,所以我想看看是否有人找到了解决方法(除了在客户端处理结果之外)。
这个方面没有按预期工作:
"keywords_bad":{
"terms_stats":{
"size":100,
"value_field":"retweet_count",
"exclude":["http","consected"],
"order":"total",
"key_field":"text"
}
}
而这个方面按预期工作:
"keywords_good":{
"terms":{
"size":100,
"exclude":["http","consected"],
"order":"count",
"field":"text"
}
}
任何合理的建议将不胜感激,因为这似乎有点不一致。
更新
根据 imotov 接受的答案,我在 GitHub 上的https://github.com/elasticsearch/elasticsearch/issues/2916创建了一个问题
【问题讨论】:
-
一条记录可以有多少个不同的词条?一条记录可以同时包含和排除术语吗?
-
术语方面有效地计算每个术语出现的文档数量,因此您可以查看哪些术语出现在更多文档中。例如,如果您在推文上运行一个术语方面,您会看到 http 并且您的屏幕名称出现加载。 “排除”允许过滤掉这些术语,同时不排除整个文档查找其他术语(如查询/过滤器那样)。 'term_stats' 应该做同样的事情,但不是为每个文档计算 1,它应该合计 value_field 中的值。所以我想以同样的方式排除不必要的术语。
-
或回答您的问题 imotov,除非明确排除(对于术语方面),否则所有术语都包含在内。而且似乎没有办法在 terms_stats 方面排除术语,从而使一大堆垃圾有资格被计算在内。
-
我明白了。我只是想弄清楚 facet_filter 是否可以用作解决方法。显然不是。 terms_stats 目前不支持排除。我建议在 github 上创建一个问题,要求添加它。
-
imotov - 这听起来像是答案。随意发布它。
标签: elasticsearch facets