Elasticsearch - 获取最流行的术语组合



>我正在尝试创建一个自动完成(按类型搜索(,该自动完成功能(按类型搜索(,该自动完成功能根据其常用文档组合各个术语建议,然后根据文档数量对术语组合进行排序。

因此,我设置了一个完成建议器,将我的非专业术语索引为建议术语,然后对每个术语(单词(进行建议查询。然后,我会得到每个术语(单词(的建议列表。之后,我创建了这些建议(笛卡尔乘积(之间的组合列表,我得到了一堆潜在的!有用的组合,例如:

tag1 tag2
tag1 tag3

等。。。

我现在需要的是:

a( 为每个组合运行全文匹配查询,以确保它实际返回任何结果(术语组合可能实际上不会返回任何文档(

b( 根据每个组合返回的文档数量对组合进行排序

c( 为每个组合查询聚合一些其他文档属性

到目前为止,我尝试的是:命名查询。但我得到的只是一个匹配的查询列表,而不是每个查询的实际文档计数,所以我可以对它们进行排序。此外,我得到了一个文档列表和该文档的匹配查询列表,所以根本没有那么有用:)

解决方案是对每个术语组合运行批量搜索(_msearch(,以获得每个术语的实际结果(如果需要,还可以进行聚合( - 而不是为每个组合运行多个搜索。

最新更新