在键入多个字段时搜索

时间:2017-11-10 05:18:05

标签: elasticsearch

对弹性搜索的新功能....我正在尝试在您键入时实现搜索,该搜索仅显示来自少数字段的前几个唯一值。例如考虑以下文件

文档1:

id:1
名称:“电脑配件”
类别:“电脑”

文档2:

ID:2
名称:“猫粮”
类别:“猫”

文档3:

id:3
名称:“mousepad”
类别:“电脑”

我想搜索名称和类别字段,这是我想要实现的内容。

当用户输入“comp”时...我想显示
电脑(类别)
电脑配件(名称)

所以我需要知道哪个字段产生了匹配结果。

请注意。即使“计算机”是2个文档的类别......它应该只在用户界面中显示一次。

当用户输入“c”时,结果应显示
猫粮(名称)
猫(类别)
电脑(类别)
电脑配件(名称)

当我输入“acc”时,它应显示
电脑配件(名称)

我可以使用完成建议器来实现吗?它似乎返回匹配的文件..所以我怎么知道哪个字段匹配?

有没有办法使用除完成建议器之外的方法来实现它?我的理解是,完成建议器将数据结构存储在内存中,我不确定我是否能负担得起大量内存......我有大约3亿个文档要编制索引..

任何指针都会有所帮助......

1 个答案:

答案 0 :(得分:0)

您可以查看这篇帖子https://dipansaha.wordpress.com/2019/02/14/search-as-you-type-using-elasticsearch-on-multiple-fields/,该帖子在您在“多个”字段中键入内容时使用EdgeNGram实现搜索。您可以突出显示查询中的内容,以便确定匹配的字段。