我在OS X上使用Node.JS客户端运行ElasticSearch 2.3.5。有时,_suggest
端点返回0结果 - 这是随机发生的,例如在测试套件中,只有四个文档被编入索引。
为什么建议者会返回0结果?这导致我的测试失败大约50%的时间。
测试套件执行以下步骤:
title: {type: 'string'}
title
API注入包含_bulk
字段的四个文档。
refresh=true
以确保文档已编入索引。我将创建一个自包含的示例应用程序来证明这一点,如果没有人可以提出任何明显的建议。
一个观察结果:小写拼写错误(例如alhpa
alpha
取得了100%的成功;只有在为viTOR
引入victor
等创意拼写错误时才会出现失败。很可能不过,我可以想象这种行为,因为错误一直在发生......)
附加:这是我为ElasticSearch API编写的包装函数:
didYouMean(input) {
return this.conn.suggest({
index: this.indexName,
type: 'customdoc',
body: {
titles: {
text: input,
phrase: {
field: 'title',
direct_generator: [{
// Only needs to be one character
// long to suggest a correction
field: 'title',
suggest_mode: 'always',
min_word_length: 1,
}],
highlight: {
pre_tag: '<strong><em>',
post_tag: '</em></strong>',
},
},
},
},
});
}
答案 0 :(得分:1)
每个分片计算建议。 你在这个索引中有多少个分片? 如果超过1,你能检查它是否在带有一个碎片的索引上发生了吗?