У меня есть настройки 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 из официального репо здесь