首先,我想说的是,我使用的是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加载的数据是字符串,而不是完成类型:
非法的\u argument\u异常,原因:字段[extid]不是完成建议字段,状态:400
所以对于
获取建议
函数,我尝试以下操作:
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中的目标列,并强制为完成类型。有人知道怎么做吗?
是否有其他解决方案来解决我的问题?