【问题标题】:Elastic Search synonyms - Delete ActionElastic Search 同义词 - 删除操作
【发布时间】:2024-01-23 23:10:02
【问题描述】:

Elastic Search(版本 6.2.3)中的同义词是在创建/更新时存储在项目中,还是在每个搜索查询中应用到索引的同义词?

我们需要删除包含 600 万个项目的索引的同义词,如果从索引中删除这些同义词就足够了,我在文档中看不到

DELETE /api/as/v1/engines/{ENGINE_NAME}/synonyms/{SYNONYM_SET_ID}

或者之后需要重新索引所有项目,在这种情况下,最好删除当前索引并创建一个新索引。

【问题讨论】:

    标签: elasticsearch indexing synonym


    【解决方案1】:
    1. 如果在插入文档时应用了同义词

      • 删除当前同义词,不会改变索引的现有数据中的任何内容,现有数据应该可以通过同义词进行搜索。
    2. 如果在查询期间应用了同义词

      • 在这种情况下,删除同义词将停止使用同义词搜索文档。

    现在的问题是您使用的是索引时间分析还是查询时间分析。您可以检查您的映射。例如

    "mappings": {
        "properties": {
          "text": {
            "type": "text",
            "analyzer": "autocomplete", // <======== For index time analysis
            "search_analyzer": "synonym_analyzer" //<====== For Query time analysis  
          }
        }
      }
    }
    

    【讨论】:

    • 那么,如果在分析器属性中使用了同义词过滤器,则会在每个项目中建立索引,否则如果在 search_analyzer 中使用同义词,则在搜索时执行,对吗?
    • 正确。如果您的问题得到解决,请接受答案