ElasticSearch短语建议或随机返回0结果

时间:2016-10-05 00:24:09

标签: elasticsearch

我在OS X上使用Node.JS客户端运行ElasticSearch 2.3.5。有时,_suggest端点返回0结果 - 这是随机发生的,例如在测试套件中,只有四个文档被编入索引。

为什么建议者会返回0结果?这导致我的测试失败大约50%的时间。

测试套件执行以下步骤:

  • 创建一个新的空白索引
    • title: {type: 'string'}
    • 的文档提供映射
  • 使用title API注入包含_bulk字段的四个文档。
    • 我正在通过refresh=true以确保文档已编入索引。
  • 一个简单的测试查询文档。他们都在那里。
  • 请求明显拼写错误的建议。 50/50通过或失败的机会

我将创建一个自包含的示例应用程序来证明这一点,如果没有人可以提出任何明显的建议。

一个观察结果:小写拼写错误(例如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>',
          },
        },
      },
    },
  });
}

1 个答案:

答案 0 :(得分:1)

每个分片计算建议。 你在这个索引中有多少个分片? 如果超过1,你能检查它是否在带有一个碎片的索引上发生了吗?