首先,我想说我使用的是Elasticsearch和Logstash 6.2,并且由于大的更新,很多主题都不兼容。在我发帖之前,我看了两次。 :)
我使用MySQL作为数据库,使用Logstash 6.2和JDBC,我在Elasticsearch 6.2中自动传输我的行。这一切都很好!
但是,我正在尝试将Elasticsearch用作Node / Express项目中的搜索引擎。我想创建一个自动填充搜索栏,如本教程Leveraging the Power of Elasticsearch: Autocomplete and Fuzzy Search中所述。
问题是我无法启用自动完成,因为从MySQL加载的数据是字符串而不是完成类型:
Illegal_argument_exception,原因:字段[extid]不是完成建议字段,状态:400
所以对于 getSuggestions 函数,我试试这个:
function getSuggestions(text, size){
return elasticClient.search({
index: indexName,
type: indexType,
body: {
suggest: {
extidSuggester: {
text: text+'~',
term: {
field: "extid",
size: size
}
},
nameSuggester: {
text: text+'~',
term: {
field: "name",
size: size
}
}
}
}
});
}
这不会让我自动完成。
解决方案可能是过滤Logstash conf中的目标列并强制执行完成类型。有人知道如何执行该操作吗?
是否有其他解决方案来解决我的问题?