Определить отображение эластичного поиска во время Docker сборки - PullRequest
1 голос
/ 15 января 2020

У меня есть настройки MySQL, Logsta sh и ES, но мне нужно установить для некоторых полей тип ключевого слова вместо текста. Я читал, что это невозможно сделать в Logsta sh (logsta sh .conf), и поэтому это нужно сделать в ES. Я следовал за подобным вопросом здесь и немного изменил его, чтобы ПОСТАВИТЬ отображение, но у меня есть эта ошибка: "stacktrace": ["org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [es.path.data] please check that any required plugins are installed, or check the breaking changes documentation for removed settings",

Я использую docker -композит для запуска всех сервисы сразу в одной сети, поэтому сопоставление должно быть указано до того, как logsta sh перенесет данные в ES. (Невозможно изменить сопоставление для непустого индекса).

Я видел другие вопросы, и они кажутся немного старыми, поэтому я хотел спросить, есть ли лучший способ сделать это сейчас.

My mapping.json

{
    "mappings": {
        "properties": {
            "authors": {"type": "keyword"},
            "tags": {"type": "keyword"}
        }
    }
}

Dockerfile

FROM elasticsearch:7.5.1

COPY ./docker-entrypoint.sh .

COPY ./mapping.json .

RUN mkdir /data && chown -R elasticsearch:elasticsearch /data && echo 'es.path.data: /data' >> config/elasticsearch.yml && echo 'path.data: /data' >> config/elasticsearch.yml

ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/e1f115e4ca285c3c24e847c4dd4be955e0ed51c2/wait-for-it.sh /utils/wait-for-it.sh

# Copy the files you may need and your insert script

RUN ./docker-entrypoint.sh elasticsearch -p /tmp/epid & /bin/bash /utils/wait-for-it.sh -t 0 localhost:9200 -- curl -X PUT 'http://localhost:9200/cnas_publications' -d @./mapping.json; kill $(cat /tmp/epid) && wait $(cat /tmp/epid); exit 0;

Редактировать: я использовал docker -входную точку. sh из официального репо здесь

1 Ответ

0 голосов
/ 16 января 2020

Кажется, что я ошибся, и на самом деле можно определить отображение в Logsta sh. Предполагая, что вы используете официальный образ эластичного поиска, создайте шаблон ES и сделайте с ним том в контейнере logsta sh.

Вот пример моего вывода моего logsta sh .conf

output {
  stdout { codec => "rubydebug" }
  elasticsearch {
    hosts => "http://elasticsearch:9200"
    index => "test"
    template => "/logstash/mapping.json"
    template_name => "mapping"
    document_id => "%{[@metadata][_id]}"
  }
}

и не забудьте установить index_patterns в своем шаблоне ES.

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