首先,我想说的是,我使用elasticsearch和logstash6.2,由于有很大的更新,很多主题是不兼容的。我看了两遍才发了我的
我使用mysql作为数据库,使用logstash6.2和jdbc,在elasticsearch6.2中自动传输我的行。这边一切正常!
不过,我正在尝试使用elasticsearch作为node/express项目中的搜索引擎。我想创建一个自动完成搜索栏,如本教程所述,利用elasticsearch的强大功能:自动完成和模糊搜索。
问题是我无法启用自动完成,因为我从mysql加载的数据是字符串,而不是完成类型:
非法参数异常,reason:field [extid]不是完成建议字段,status: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中的目标列,并强制为完成类型。有人知道怎么做吗?
有别的办法解决我的问题吗?
1条答案
按热度按时间up9lanfz1#
我终于自己回答了。
创建Map时,我使用了github上的默认Map。
我在这个Map中添加了所需字段的类型完成,它解决了我的问题。
就这么简单!