[英]ElasticSearch 6.2: autocomplete search from MySQL
首先,我想说的是,我使用Elasticsearch和Logstash 6.2,并且由于进行了较大的更新,因此许多主题不兼容。 在发布我的帖子之前,我看了两次。 :)
我使用MySQL作为数据库,并使用Logstash 6.2和JDBC,在Elasticsearch 6.2中自动传输行。 从这一方面,一切都很好!
但是,我正在尝试将Elasticsearch用作Node / Express'项目中的搜索引擎。 我想创建一个自动完成搜索栏,如本教程所述, 利用Elasticsearch的功能:自动完成和模糊搜索 。
问题是我无法启用自动完成功能,因为从MySQL加载的数据是String而不是Completion类型:
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中的目标列,然后强制使用补全的类型。 有人知道如何执行吗?
还有其他解决方案可以解决我的问题吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.