以不重新索引或重新加载的方式更新Elasticsearch同义词
Elasticsearch的同义词特性非常强大,在正确使用时可以显著提高搜索引擎的效率。在使用同义词特性时的一个常见问题是更新同义词集合。
在索引设置中内联定义的同义词无法直接更新,我们需要关闭索引,更新设置,然后重新打开索引才能使更改生效。另一种方法是使用可通过重新加载索引进行更新的同义词文件。然而,当Elasticsearch服务器分布或托管在云中时,使用索引文件很难管理。这是因为我们需要将文件放在所有集群节点上。
好消息是现在有了第三种方式,比前两种方式更加方便。我们现在可以使用同义词API来管理同义词。尽管在撰写时,这仍是Elasticsearch的beta功能,但我认为它很快就会被采用,因为该功能开发人员需求量很大,并且可以方便地解决更新同义词集合的棘手问题。我们将在本文中探讨同义词API的常见用法。
准备工作
我们将使用以下docker-compose.yaml
文件在本地启动Elasticsearch和Kinana以进行演示。
version: "3.9"services: elasticsearch: image: elasticsearch:8.11.1 environment: - discovery.type=single-node - ES_JAVA_OPTS=-Xms1g -Xmx1g - xpack.security.enabled=false ports: - target: 9200 published: 9200 networks: - elastic kibana: image: kibana:8.11.1 ports: - target: 5601 published: 5601 depends_on: - elasticsearch networks: - elastic networks: elastic: name: elastic driver: bridge
请注意,您需要至少具有8.10.0版本的Elasticsearch才能使用同义词API。最新版本应该是最好的选择,因为该功能可能已经更加成熟。