Не удается загрузить и использовать файл synonym.txt в ElasticSearch - PullRequest
0 голосов
/ 15 апреля 2020

Я использую следующий docker -compose.yml для создания кластера ElasticSearch:

version: '3.3'
services:
  elasticsearch1:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    container_name: elasticsearch1
    environment:
      ...
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - data01:/usr/share/elasticsearch/data
      - ${PWD}/data/thesaurus/output:/usr/share/elasticsearch/config/extra
    ports:
      - 9200:9200
    networks:
      - elastic
  elasticsearch2:
    ...
volumes:
  data01:
    driver: local
  data02:
    driver: local
networks:
  elastic:
    driver: bridge

Мой индекс содержит:

  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1,
    "index" : {
      "analysis" : {
          "filter" : {
              "synonym" : {
                  "type" : "synonym", 
                  "synonyms_path" : "extra/synonym.txt"
              }
          },
          "analyzer" : {
              "synonym" : {
                  "tokenizer" : "standard",
                  "filter" : ["lowercase", "synonym"] 
              }
          }
      }
    }

Когда я пытаюсь PUT мои данные я получаю:

{'error': {'root_cause': [{'type': 'illegal_argument_exception', 'reason': 'failed to build synonyms'}], 'type': 'illegal_argument_exception', 'reason': 'failed to build synonyms', 'caused_by': {'type': 'i_o_exception', 'reason': 'Is a directory'}}, 'status': 400}

Интересно, что когда я запускаю: docker exec elasticsearch1 cat config/extra/synonym.txt, я получаю сообщение об ошибке: cat: config/extra/synonym.txt: Is a directory

Как загрузить и использовать файл synonym.txt

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Как написано в документации elasti c - здесь :

Выше настраивается фильтр синонимов с путем анализа / synonym.txt (относительно конфигурации расположение). Затем анализатор синонимов настраивается с помощью фильтра.

Таким образом, вы заменяете synonyms_path:

"synonyms_path" : "/extra/synonym.txt" 

in:

"synonyms_path" : "extra/synonym.txt"
0 голосов
/ 15 апреля 2020

Оказывается, это проблема с WSL - см. Здесь: github.com/docker/for-win/issues/2151

В качестве обходного пути я поместил свой synonym.txt в Windows каталог и затем связанный с ним, например:

    volumes:
      - data01:/usr/share/elasticsearch/data
      - /c/QAMaker:/usr/share/elasticsearch/config/extra

Примечание: Моя Windows файловая система смонтирована как на Docker для Windows, так и на моем WSL дистрибутив на /c ... Я не уверен, будет ли это работать, если в моем дистрибутиве файловая система Windows была смонтирована по умолчанию /mnt/c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...