如何在不与分析器发生冲突的情况下更新 ElasticSearch search_analyzer 映射?

How to update ElasticSearch search_analyzer mapping without conflict on analyzer?

我使用的是 ElasticSearch、LogStash 和 Kibana 的 7.7 版,尝试更新字段的索引映射导致了 2 个错误之一:

这是我正在尝试的操作。如果我删除 "analyzer": "standard",我会得到第一个错误。如果我把它留在里面,我会得到第二个错误。

PUT /my_index/_mapping
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "standard",
      "search_analyzer": "synonyms"
    }
  }
}

然而,当我使用 GET /my_index/_mapping 获取映射时,我没有看到任何定义的分析器:

"title" : {
  "type" : "text",
  "fields" : {
    "keyword" : {
      "type" : "keyword",
      "ignore_above" : 256
    }
  }
},

额外信息

这是我设置 "synonyms" 搜索分析器的方法,但我认为这不相关:

POST /my_index/_close
PUT /my_index/_settings
{
  "index": {
    "analysis": {
      "analyzer": {
        "synonyms": {
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "the_synonyms"
          ]
        }
      },
      "filter": {
        "the_synonyms": {
          "type": "synonym",
          "synonyms_path": "the_synonyms.txt",
          "updateable": true
        }
      }
    }
  }
}
POST /my_index/_open

以下作品。不确定这样做有什么影响。我不这么认为,但除了声明 standard 分析器是默认分析器的文档外,我也找不到任何关于它的文档。我基本上是通过猜测找到这个答案的。

PUT /my_index/_mapping
{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "default",
      "search_analyzer": "synonyms"
    }
  }
}