Elasticsearch:更新索引分析器后,索引需要重新索引吗?

ar0*_*968 3 elasticsearch

如果我更新同义词或关键字等索引分析器,我需要重新索引文档吗?

分析器更新后,我注意到一些奇怪的搜索结果。

Arc*_*ena 5

答案是肯定的。您需要以相同的方式对所有数据进行索引。这可能是获得“奇怪”结果的原因。已编入索引的数据根据​​之前定义的分析器的规则编入索引。更改分析器后索引的任何数据都由新规则索引。

而且由于您的查询现在也由新规则进行分析,因此它可能不会从旧的索引数据集生成结果。您现在可以通过 elastic reindex api 轻松地重新索引数据。阅读:https : //www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html 如果您担心 Down-time,那么您可以阅读:https : //www.elastic.co /博客/改变映射零停机时间

您可以使用所需的设置创建新索引 (index_name_v1)。接下来你可以使用 reindex API:

POST /_reindex
{
  "source": {
    "index": "old_index"
  },
  "dest": {
    "index": "index_name_v1"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以先在旧索引上创建别名。并在您的代码中使用该别名。在将数据重新索引到新索引后,您可以从旧索引中删除别名,并通过一次原子操作将其添加到新索引中。POST /_aliases -d { "actions": [ { "remove": { "alias": "my_index", "index": "my_index_v1" }}, { "add": { "alias": "my_index", " index": "my_index_v1" }} ] } 阅读 https://www.elastic.co/blog/changed-mapping-with-zero-downtime 了解更多详情。 (2认同)