首页 > 解决方案 > Elasticsearch - 针对现有数据集测试新的分析器

问题描述

Elasticsearch 新手。

我需要更新索引以将复数和单数都视为匹配项。所以green apple应该匹配green apples并且很好(反之亦然)。

通过我的研究,我知道我需要使用过滤器重新创建索引。stemmer

所以:

"analysis": {
  "analyzer": {
    "std_analyzer": {
      "tokenizer": "whitespace",
      "filter": [ "stemmer" ]
    }
  }
}
  1. 谁能确认以上是否正确?如果没有,我需要使用什么?

  2. 我也明白我无法修改现有索引,而是需要使用此分析器创建一个新索引,然后将所有文档重新添加到新索引中。那是对的吗?如果是这样,是否有捷径或简单的方法告诉它“将索引 X 中的所有文档添加到新索引 Y 中?”

谢谢您的帮助

标签: elasticsearchsearchlucene

解决方案


查找内联答案

  1. 在大多数情况下,它应该可以工作,而且很难涵盖所有未来的用例,在你的情况下,我们甚至不知道你当前的用例,你可以使用分析 API并测试你的一些使用-case,在将这些与分析器相关的更改推送到生产之前。*

  2. 添加/更改分析器是一项重大更改,因为它控制如何在弹性搜索倒排索引中生成和索引令牌,因此您必须使用更新的分析器设置创建重新索引所有文档,您可以使用带别名的重新索引 API来做到这一点零停机时间。


推荐阅读