java - 使用完成建议程序进行ElasticSearch自动完成以返回已完成的文档

标签 java elasticsearch autocomplete completion

我正在为我们的“自动完成”文本框之一使用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/

相关文章:

java - java servlet 中出现令人惊讶的结果

java - @SafeVarargs 是否适合此方法的注释?

java - 跳转二次方程-JAVA

elasticsearch - Elasticsearch时间字段和范围查询

rest - 尝试启动嵌入式 Elasticsearch 节点时不支持 http.type [netty3]

Java JNI 和 Vala - undefined symbol : g_once_init_enter

Elasticsearch 聚合 URL 主机名

php - 帮助获取传递到 Jquery 自动完成插件的正确信息以获得可点击的结果

html - Sublime Text 3-CSS自动完成功能,无需输入属性值

cocoa - NSTextfield 完成