elasticsearch ElasticSearch完成建议';s索引
您好: 我试图理解完成建议的索引过程。参考ElasticSearch文档,我想知道是否不能针对索引中已有文档的属性提出建议,而不是创建一个单独的属性来容纳所有可能的自动完成条款?这意味着每次我需要为文档编制索引时,我都会调用两个调用。一个调用为整个文档编制索引,另一个调用将新索引文档中的新术语添加到我的建议属性中
elasticsearch ElasticSearch完成建议';s索引,
elasticsearch,nest,
elasticsearch,Nest,您好: 我试图理解完成建议的索引过程。参考ElasticSearch文档,我想知道是否不能针对索引中已有文档的属性提出建议,而不是创建一个单独的属性来容纳所有可能的自动完成条款?这意味着每次我需要为文档编制索引时,我都会调用两个调用。一个调用为整个文档编制索引,另一个调用将新索引文档中的新术语添加到我的建议属性中 谢谢 实际上你不必打两个电话。您可以在一次调用中索引文档和建议属性 映射示例: { "mappings": { "_doc" : { "properties"
谢谢 实际上你不必打两个电话。您可以在一次调用中索引文档和建议属性 映射示例:
{
"mappings": {
"_doc" : {
"properties" : {
"suggest" : {
"type" : "completion"
},
"title" : {
"type": "keyword"
},
"album" : {
"type": "text"
}
}
}
}
}
示例文档/索引:
PUT /music
{
"title": "jazz",
"album": "Wonder Fortune",
"suggest" : {
"input": [ "Wonder", "World", "Fortune"],
"weight" : 37
}
}
谢谢你的反馈,萨米尔。我的最后一个问题是,当我为文档编制索引时,是否需要对输入进行标记以编制索引?示例..如果我想自动完成术语
杰克和吉尔上山了
…我如何将其标记为索引?输入:[“Jack and JIll”,“Jack hill up the hill”,“JIll hill up the hill”],我不确定是否可以在代码中标记这些单词,或者是否有办法让ElasticSearch标记这些单词以编制索引?不,建议术语不需要analyzer。原因如下:(来自Elasticsearch文档)要使用的索引分析器默认为simple。如果您想知道为什么我们没有选择标准分析器:我们尝试在这里使用易于理解的行为,如果您在驱动器输入处对字段内容进行索引,您将不会得到关于a和d(第一个非停止字)的任何建议。
好的,如果我理解正确,在索引文档时……我应该有“建议”:{“输入”:[“杰克和吉尔上山”]}然后ES会自动标记句子。所以如果我搜索姬尔这个词,它会返回这个建议。我问的原因是因为ES把建议转化成FST图……这个搜索是从最左边的词发生的……在这种情况下,杰克……所以如果我在句子的中间寻找一个词,比如说姬尔,根据ES。医生,我什么都得不到suggestions@DeanCompletion Suggester是前缀,因此如果您键入Jill
,您将无法获得建议,而使用默认的简单分析器则不行。您可以定义要使用的其他分析器,或提供多个输入,但请记住,Completion Suggester是为在键入时进行快速“搜索”而设计的“,而不是针对复杂搜索需求的灵活方法