elasticsearch - 实时更新 Elasticsearch 同义词

标签 elasticsearch

背景:
一直以来,我一直认为,如果同义词文件中有任何更改,您将需要重新索引整个索引。当然,如果索引大小很小,过程不会那么慢,但是过程本身很乏味,并且会有停机时间。

所以问题:

  • 在这种情况下,我的理解有误吗?意味着有更简单的方法来反射(reflect)我的索引的同义词更改吗?无需重新索引。
  • 有一个 future 的需求,而不是手动更新文件中的规则,也许可以从 DB 甚至 UI 进行更改。这能做到吗?如果可能的话,能否启发或建议我如何做到这一点?
  • 我相信这与查询或索引时间同义词扩展有关,之前在这里出现过类似的问题:问题,但这是否仍然适用于当前的 ES 版本 5、6 甚至 7?由于权威指南可以追溯到 ver.2,所以我有点担心它已经过时了。
  • 如果使用查询时同义词,如果我对同义词文件进行了任何更改,是否需要重新启动节点才能生效?

  • 谢谢你。

    最佳答案

  • 重新索引是一种方法。
  • 是的,您可以通过 API 获取模板并使用同义词更新它。但是这里需要再次打开和关闭索引
  • 您可以使用基于文件的同义词来避免重新索引。

  • 您可以关闭索引、更新同义词列表并打开索引。
    更新同义词列表不会更改任何已编入索引的文档。它仅适用于搜索以及新的或更新的文档。要将更改应用于现有文档,您需要重新索引数据。
    以下链接可能会有所帮助:

    https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html
    https://sharing.luminis.eu/blog/updatable-synonyms-in-elasticsearch-bol-com/

    同义词 可以在查询时间和索引时间应用,在性能和灵活性之间进行权衡。
    您可以在此处阅读两种方法的优缺点:https://www.elastic.co/guide/en/elasticsearch/guide/1.x/synonyms-expand-or-contract.html#synonyms-expansion .
    在映射中使用 search_analyzer 而不是 analyzer 将使同义词分析器仅在搜索时使用。

    回答您的问题: (在评论中提到)。
    对“更新同义词列表不会改变任何已经被索引的文档”有什么影响?
    - 查询时间方法会选择同义词而索引时间不会。
    这是否意味着新同义词不会影响所有现有文档?
    - 是的,它不会影响文档,但会根据配置的同义词影响搜索结果。
    例如,我现有的文档中有 McD,然后我添加了一个新的同义词 McD,McDonald,这是否意味着没有重新索引,这个同义词将不起作用?
    - 我相信以上两个 QA 回答了这个问题。

    更多信息请引用这篇文章:http://bitsandbites.me/blog/2014/04/08/elasticsearch-synonyms/

    关于elasticsearch - 实时更新 Elasticsearch 同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814235/

    相关文章:

    elasticsearch - Logstash错误-用于Elasticsearch的未知设置 '“hosts”'

    elasticsearch - Kibana 和 _source 字段,Elastic 版本 6.7

    javascript - ElasticSearch 查询过滤掉某些摄像头

    elasticsearch - 使用 NEST 5.x 创建 Elasticsearch 索引

    ruby-on-rails - 依赖属性的动态索引(轮胎、 rails ) - ElasticSearch

    elasticsearch - 按multi_field查询时没有结果elasticsearch

    elasticsearch - 设置ELK堆栈

    search - 使用通配符突出显示的 Elasticsearch 无法按预期工作

    elasticsearch - 如何知道 Elasticsearch 集群中的总节点数?

    elasticsearch - 日期直方图汇总后如何再次执行日期直方图?