因此,我在搜索分析器中定义了一个具有同义词映射的索引。当我第一次创建索引时,这些同义词是在搜索时发现的。之后,我更新了节点上的synonyms.txt文件一次,以更新同义词映射,并在进行更改后重新启动每个节点。这导致同义词的变化反映在搜索上,尽管索引。
现在,当我更改同义词文件并重新启动节点时,同义词映射并不像我认为应该更新的那样更新。我是不是遗漏了什么?我想,由于同义词映射在search_analyzer上,所以不必每次都重新编制索引来反映更改。
以下是我的索引定义:
PUT /synonym_index
{
"aliases": {},
"mappings": {
"_doc": {
"properties": {
"name": {
"type": "text",
"fields": {
"english": {
"type": "text",
"analyzer": "english",
"search_analyzer":"english_and_synonyms"
}
}
}
}
}
},
"settings": {
"analysis": {
"analyzer": {
"english": {
"tokenizer": "standard",
"filter": [
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_keywords",
"english_stemmer"
]
},
"english_and_synonyms": {
"tokenizer": "standard",
"filter": [
"search_synonyms",
"english_possessive_stemmer",
"lowercase",
"english_stop",
"english_keywords",
"english_stemmer"
]
}
},
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
},
"english_keywords": {
"type": "keyword_marker",
"keywords": ["example"]
},
"english_stemmer": {
"type": "stemmer",
"language": "english"
},
"english_possessive_stemmer": {
"type": "stemmer",
"language": "possessive_english"
},
"search_synonyms" : {
"type" : "synonym_graph",
"synonyms_path" : "analysis/synonyms.txt"
}
}
},
"index": {
"number_of_shards": "5",
"number_of_replicas": "1"
}
}
}我尝试过重新启动节点
sudo服务elasticsearch重启
也和
sudo服务elasticsearch停止sudo服务elasticsearch开始
但也没有让我的改变反映出来。我是否需要在每次更新同义词文件时重新编制索引,即使它是搜索分析器?
发布于 2018-10-09 17:54:16
要反映同义词文件中的更改,需要在对文件进行更改后关闭并打开索引。这可以通过执行post请求来完成:
POST /synonym_index/_close
POST /synonym_index/_open在_open调用之后,您应该会看到搜索中反映的更改
发布于 2021-03-10 13:57:23
也许您要寻找的是:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-reload-analyzers.html
你必须声明你的同义词是updatable
"search_synonyms" : {
"type" : "synonym_graph",
"synonyms_path" : "analysis/synonyms.txt",
"updatable": true
}在映射中,您需要声明您的自定义search_analyzer:
"mappings": {
"properties": {
"one_attribute": {
"type": "text",
"search_analyzer": "english_and_synonyms"
}
}
}https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html
我是否需要在每次更新同义词文件时重新编制索引,即使它是搜索分析器?
只有当您的同义词在索引时间内被使用时。如果它们仅在搜索期间使用,则不必每次都重新索引。
https://stackoverflow.com/questions/52723452
复制相似问题