我正在为我们的“自动完成”文本框之一使用Elastic search的“完成”建议程序。我想知道是否可以使用完成建议程序返回文档而不是字符串(建议)?
例如。现在,如果我搜索“Banana”,它将返回“Banana”,“Bandana”。只是字符串,但是有可能返回字符串所属的完整文档吗?
如果我在同一字段上编写普通的全文查询,是否会针对AutoComplete进行优化?
当我尝试运行原始的Elastic搜索完成查询时。我正在获取完整的文档,而不是建议的字符串-
文件连结:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html#querying
我使用过的查询-
POST /my_entities/_search?pretty
{
"suggest": {
"auto-suggest" : {
"prefix" : "banda",
"completion" : {
"field" : "name"
}
}
}
}.
上面的原始查询返回了以下源(仅粘贴输出的源)-
{
"_source":{
"entityType":"cloth",
"entityId":"bandana",
"name":"Bandana",
}
}
最佳答案
完成建议程序不会仅将其作为建议程序返回整个文档,并且不会像返回整个文档的全文搜索那样工作。
完成建议程序将返回整个文档作为建议的一部分。您可以在查询时使用源控制返回哪些所有键。
请参阅此link,以获取有关如何使用Java Client API提取源字段的信息。
如果您需要整个文档,则可以在全文中实现autosuggest,并且根据opster's blog on autocomplete中提到的折衷方案,可以采用多种方法。
您还可以引用https://stackoverflow.com/a/60584211/4039431以获取有关构建自动完成功能的功能需求和非功能需求的更多信息。
关于java - 使用完成建议程序进行ElasticSearch自动完成以返回已完成的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62130639/