gpt4 book ai didi

docker - 在Docker构建期间定义Elasticsearch映射

转载 作者:行者123 更新时间:2023-12-02 19:52:27 26 4
gpt4 key购买 nike

我有一个MySQL,Logstash和ES设置程序,但是我需要将某些字段设置为关键字类型而不是文本。我读过,不可能在Logstash(logstash.conf)中执行此操作,因此需要在ES中完成。我遵循了类似的问题here,并对其进行了少许修改以将其放入映射,但出现了此错误:"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-compose在同一网络下一次启动所有服务,因此必须在logstash将数据移植到ES之前指定映射。 (无法更改非空索引的映射)。

我看到了其他问题,它们看起来确实有些陈旧,所以我想问一下现在是否有更好的方法可以做到这一点。

我的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;

编辑:我已经使用了官方仓库 here的docker-entrypoint.sh

最佳答案

似乎我弄错了,实际上可以在Logstash中定义映射。假设您使用的是官方的Elasticsearch镜像,请创建一个ES模板,并使用它创建一个卷至logstash容器。

这是我的logstash.conf输出的示例

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

并且不要忘记在ES模板中设置 index_patterns

关于docker - 在Docker构建期间定义Elasticsearch映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59749297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com