Используйте API синонимов для удобного обновления синонимов в Elasticsearch

Улучшите обновление синонимов в Elasticsearch с помощью API синонимов

Узнайте новый способ обновления синонимов Elasticsearch без переиндексации или перезагрузки

Изображение от Tumisu на Pixabay

Синонимы в Elasticsearch очень мощные и могут значительно повысить эффективность вашего поискового движка, если используются правильно. Обычная проблема при использовании функции синонимов – это обновление набора синонимов.

Синонимы, определенные встроенно в настройках индекса, не могут быть обновлены напрямую, и нам нужно закрыть индекс, обновить настройки и снова открыть индекс, чтобы изменения вступили в силу. Еще один способ – использовать файл синонимов, который можно обновить, перезагрузив индекс. Однако использование индексного файла трудно управлять, когда сервер Elasticsearch распределен или размещен в облаке. Это потому, что мы должны поместить файл на всех узлах кластера.

Хорошая новость в том, что теперь есть третий способ, который гораздо удобнее, чем предыдущие два. Теперь мы можем использовать APIs для управления синонимами. Несмотря на то, что в настоящее время это бета-функциональность Elasticsearch, я думаю, что она скоро будет принята, потому что этот функционал очень востребован разработчиками и позволяет удобно решать сложную задачу обновления наборов синонимов. Мы рассмотрим общее использование APIs для синонимов в этой статье.

Подготовка

Мы будем использовать следующий файл 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

Обратите внимание, что вам необходима версия Elasticsearch не ниже 8.10.0 для использования APIs для синонимов. Лучше всего использовать самую последнюю версию, так как функция должна быть более зрелой.

Создание набора синонимов