如何在不与分析器发生冲突的情况下更新 ElasticSearch search_analyzer 映射?
How to update ElasticSearch search_analyzer mapping without conflict on analyzer?
我使用的是 ElasticSearch、LogStash 和 Kibana 的 7.7 版,尝试更新字段的索引映射导致了 2 个错误之一:
mapper_parsing_exception: analyzer on field [title] must be set when search_analyzer is set
illegal_argument_exception: Mapper for [title] conflicts with existing mapping:\n[mapper [title] has different [analyzer]]
这是我正在尝试的操作。如果我删除 "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"
}
}
}
我使用的是 ElasticSearch、LogStash 和 Kibana 的 7.7 版,尝试更新字段的索引映射导致了 2 个错误之一:
mapper_parsing_exception: analyzer on field [title] must be set when search_analyzer is set
illegal_argument_exception: Mapper for [title] conflicts with existing mapping:\n[mapper [title] has different [analyzer]]
这是我正在尝试的操作。如果我删除 "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"
}
}
}