一尘不染

在ElasticSearch设置中更新分析器

elasticsearch

我正在使用Sense(Chrome插件),并且已经成功设置了分析仪,并且可以正常工作。如果我在设置上发出GET(/ media /
_settings),则返回以下内容。

{
   "media": {
      "settings": {
         "index": {
            "creation_date": "1424971612982",
            "analysis": {
               "analyzer": {
                  "folding": {
                     "filter": [
                        "lowercase",
                        "asciifolding"
                     ],
                     "tokenizer": "standard"
                  }
               }
            },
            "number_of_shards": "5",
            "uuid": "ks98Z6YCQzKj-ng0hU7U4w",
            "version": {
               "created": "1040499"
            },
            "number_of_replicas": "1"
         }
      }
   }
}

我正在尝试通过执行以下操作来更新它:

关闭索引

发出此PUT命令(删除过滤器)

PUT /media/_settings
{
  "settings": {
    "analysis": {
      "analyzer": {
        "folding": {
          "tokenizer": "standard",
          "filter":  [ "lowercase" ]
        }
      }
    }
  }
}

打开索引

但是,当设置恢复时,不会删除过滤器。创建分析器后,是否可以不对其进行更新?


阅读 209

收藏
2020-06-22

共1个答案

一尘不染

简短答案:不可以。

更长的答案。从ES文档:

“尽管您可以向索引添加新类型或为类型添加新字段,但是您不能添加新的分析器或对现有字段进行更改。如果这样做,那么已经被索引的数据将是不正确的而且您的搜索将无法按预期进行。”

最好的方法是创建一个新索引并移动数据。有些客户端有帮助您完成此任务的助手,但这不是标准Java客户端的一部分。

http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/guide/current/reindex.html

2020-06-22