我需要从 elasticsearch 中获取热门搜索词。我们正在使用 elasticsearch 提供的重要术语功能,但此功能只能获取热门的单个单词搜索术语。相反,我们需要进行多词搜索。
目前在 elasticsearch 中有这样做的方法吗?
以下是我们正在使用的相关查询:
GET /mentions/_search
{
"size": 0,
"query": {
"match": {
"snippet": {
"query": "#Hashtag"
}
}
},
"aggs": {
"trends": {
"significant_terms": {
"field": "snippet",
"size": 1000
}
}
}
}
最佳答案
常见的短语问题没有“神奇”的解决方案,
不过,我觉得处理此问题的最佳方法是使用 N-grams概念。
基本上不是为单个单词索引文本(因为顶级术语聚合搜索仅限于索引术语),如果您对如何操作有特定的想法,则创建一个为您量身定制的新分析器,或者创建一个使用Common gram token filter我觉得这对你很有用,因为 elasticsearch 开发人员很聪明(大概),他们的解决方案可能比你或我精心设计的 haSTLey 更有效。
请注意,我不确定您的规模是多少,但此解决方案将使用更多磁盘空间并可能影响其他查询效率。
关于python - 如何使用 elasticsearch 获取热门复合搜索词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790633/