【发布时间】:2018-10-26 16:15:12
【问题描述】:
首先,我想说我使用的是 Elasticsearch 和 Logstash 6.2,由于大更新,很多主题不兼容。在发布我的之前,我看了两遍。 :)
我使用 MySQL 作为数据库,并使用 Logstash 6.2 和 JDBC,我在 Elasticsearch 6.2 中自动传输我的行。这边一切正常!
但是,我正在尝试在 Node/Express 项目中使用 Elasticsearch 作为搜索引擎。我想按照本教程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 中的目标列并强制使用完成的类型。有人知道如何执行吗?
还有其他解决方案可以解决我的问题吗?
【问题讨论】:
标签: mysql node.js express elasticsearch logstash