Elasticsearch - 针对现有数据集测试新的分析器

Elasticsearch - Test new analyzers against an existing data set

Elasticsearch 新手。

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

通过我的研究,我了解到我需要使用 stemmer 过滤器重新创建索引

所以:

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

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

感谢您的帮助

查找内联答案

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

  2. Adding/changing Analyzer 是一项重大更改,因为它控制令牌在 elasticsearch 倒排索引中的生成和索引方式,因此 您必须创建重新索引所有具有更新的分析器设置的文档,您可以将 reindex API 与 零停机时间的别名。