在docker容器中使用映射配置ES索引模板的最佳方法是什么?我希望使用模板文件,但似乎从版本2 is not possible。执行http请求也不会起作用,因为容器创建过程无法启动。它可以在每个容器启动时使用脚本启动,该脚本将启动ES并对其执行HTTP请求,但它看起来非常难看。
答案 0 :(得分:0)
您可以通过在Linux终端中执行HTTP PUT请求来配置带有映射的模板,如下所示:
curl -XPUT http://ip:port/_template/logstash -d '
{
"template": "logstash-*",
"settings": {
"number_of_replicas": 1,
"number_of_shards": 8
},
"mappings": {
"_default_": {
"_all": {
"store": false
},
"_source": {
"enabled": true,
"compress": true
},
"properties": {
"_id": {
"index": "not_analyzed",
"type": "string"
},
"_type": {
"index": "not_analyzed",
"type": "string"
},
"field1": {
"index": "not_analyzed",
"type": "string"
},
"field2": {
"type": "double"
},
"field3": {
"type": "integer"
},
"xy": {
"properties": {
"x": {
"type": "double"
},
"y": {
"type": "double"
}
}
}
}
}
}
}
'
“logstash- *”是您的索引名称,您可以尝试一下。
答案 1 :(得分:0)
如果使用logstash,则可以将模板作为logstash管道配置的一部分
管道/ logstash.conf
input {
...
}
filter {
...
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
template => "/usr/share/logstash/templates/logstash.template.json"
template_name => "logstash"
template_overwrite => true
index => "logstash-%{+YYYY.MM.dd}"
}
}