我有一个包含多个主题的图书索引
每个主题都有一组同义词和一个全局同义词。
设置{“分析”:{“筛选器”:{ "biology_synonyms":{“类型”:“同义词”,“同义词”:"a,aa,aaa“},"chemistry_synonyms":{“类型”:“同义词”,“同义词”:"c,cc,ccc“},"global_synonyms":{ "type":”同义词“,“同义词”:"x,xx,xxx“},”分析器“:{ "chemistry_analyzer":{ "filter":"global_synonyms","chemistry_synonyms“},"biology_analyzer":{”筛选器“:"global_synonyms","biology_synonyms”}
比方说,在任何时候,我都想增加一个名为“天文学”的新学科
现在的问题是如何更新索引设置以添加新的"Astronomy_synonyms“和"Astronomy_analyzer”
我的应用程序要求我用现有的过滤器和分析器附加设置,我不想覆盖(替换设置)
发布于 2020-05-07 13:55:15
您肯定可以添加新的令牌过滤器和分析器,但是需要在更新设置之前关闭索引,并在完成后重新打开它。在下面的内容中,我假设索引已经存在。
假设您使用以下初始设置创建索引:
PUT /books
{
"settings": {
"analysis": {
"filter": {
"biology_synonyms": {
"type": "synonym",
"synonyms": [
"a, aa, aaa"
]
},
"chemistry_synonyms": {
"type": "synonym",
"synonyms": [
"c, cc, ccc"
]
},
"global_synonyms": {
"type": "synonym",
"synonyms": [
"x, xx, xxx"
]
}
},
"analyzer": {
"chemistry_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"global_synonyms",
"chemistry_synonyms"
]
},
"biology_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"global_synonyms",
"biology_synonyms"
]
}
}
}
}
}然后,您需要关闭索引:
POST books/_close然后,您可以添加新的分析器和令牌过滤器:
PUT /books/_settings
{
"analysis": {
"filter": {
"astronomy_synonyms": {
"type": "synonym",
"synonyms": [
"x, xx, xxx"
]
}
},
"analyzer": {
"astronomy_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"global_synonyms",
"astronomy_synonyms"
]
}
}
}
}并最终重新打开索引
POST books/_open如果然后检查索引设置,您将看到所有内容都已正确合并。
发布于 2020-05-07 13:55:36
您只能在封闭索引上定义新的分析器。若要添加分析器,必须关闭索引、定义分析器并重新打开索引。
POST /books/_close
PUT /books/_settings
{
"analysis": {
"filter": {
"astronomy_synonyms": {
"type": "synonym",
"synonyms": [
"a, aa, aaa=>a"
]
}
},
"analyzer": {
"astronomy_analyzer": {
"tokenizer" : "whitespace",
"filter": [
"global_synonyms", "astronomy_synonyms"
]
}
}
}
}
POST /books/_openhttps://stackoverflow.com/questions/61659127
复制相似问题