以下是我正在使用的最新版本的logstash和elasticsearch的问题的可复制示例。
我正在使用logstash将来自csv的地理空间数据作为geo_points输入到elasticsearch。
CSV如下所示:
$ head simple_base_map.csv
"lon","lat"
-1.7841,50.7408
-1.7841,50.7408
-1.78411,50.7408
-1.78412,50.7408
-1.78413,50.7408
-1.78414,50.7408
-1.78415,50.7408
-1.78416,50.7408
-1.78416,50.7408
我创建了一个映射模板,如下所示:
$ cat simple_base_map_template.json
{
"template": "base_map_template",
"order": 1,
"settings": {
"number_of_shards": 1
},
"mappings": {
"node_points" : {
"properties" : {
"location" : { "type" : "geo_point" }
}
}
}
}
并有一个logstash配置文件,如下所示:
$ cat simple_base_map.conf
input {
stdin {}
}
filter {
csv {
columns => [
"lon", "lat"
]
}
if [lon] == "lon" {
drop { }
} else {
mutate {
remove_field => [ "message", "host", "@timestamp", "@version" ]
}
mutate {
convert => { "lon" => "float" }
convert => { "lat" => "float" }
}
mutate {
rename => {
"lon" => "[location][lon]"
"lat" => "[location][lat]"
}
}
}
}
output {
stdout { codec => dots }
elasticsearch {
index => "base_map_simple"
template => "simple_base_map_template.json"
document_type => "node_points"
}
}
然后运行以下命令:
$cat simple_base_map.csv | logstash-2.1.3/bin/logstash -f simple_base_map.conf
Settings: Default filter workers: 16
Logstash startup completed
....................................................................................................Logstash shutdown completed
但是,当查看索引base_map_simple时,它表明文档中没有位置:geo_point类型…而应该是lat和lon的两倍。
$ curl -XGET 'localhost:9200/base_map_simple?pretty'
{
"base_map_simple" : {
"aliases" : { },
"mappings" : {
"node_points" : {
"properties" : {
"location" : {
"properties" : {
"lat" : {
"type" : "double"
},
"lon" : {
"type" : "double"
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1457355015883",
"uuid" : "luWGyfB3ToKTObSrbBbcbw",
"number_of_replicas" : "1",
"number_of_shards" : "5",
"version" : {
"created" : "2020099"
}
}
},
"warmers" : { }
}
}
我将如何更改上述任何文件,以确保它作为geo_point类型进入elasticsearch?
最后,我希望能够使用以下命令在geo_points上进行最近邻居搜索:
curl -XGET 'localhost:9200/base_map_simple/_search?pretty' -d'
{
"size": 1,
"sort": {
"_geo_distance" : {
"location" : {
"lat" : 50,
"lon" : -1
},
"order" : "asc",
"unit": "m"
}
}
}'
谢谢
问题在于,在elasticsearch
输出中您为索引命名,base_map_simple
而在模板中该template
属性为base_map_template
,因此在创建新索引时不会应用该模板。该template
属性需要以某种方式匹配要创建的索引的名称,以使模板生效。
如果将后者简单地更改为,它将起作用base_map_*
,例如:
{
"template": "base_map_*", <--- change this
"order": 1,
"settings": {
"index.number_of_shards": 1
},
"mappings": {
"node_points": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
更新
确保首先删除当前索引以及模板。
curl -XDELETE localhost:9200/base_map_simple
curl -XDELETE localhost:9200/_template/logstash
问题内容: 如何使用Logstash将数据从Elasticsearch导出到CSV?我只需要包括特定的列。 问题答案: 安装2个插件:elasticsearch输入插件和csv输出插件。然后创建一个配置文件。这是这种情况的一个很好的例子。 您现在就可以开始了,只需运行: 并检查中指定的文件。
问题内容: ElasticSearch索引创建 场图 LogStash配置文件musicStash.config 现在,在执行logstash配置文件时,在elasticsearch控制台中收到以下异常 在Logstash控制台中收到错误, 那么如何通过Logstash导入csv文件来实现elasticsearch自动完成功能。 问题答案: 您在输出中缺少以下设置: 发生的是,logstash创建
这是我的Mysql。配置 这是我的模板。json 这是我的elasticSearch索引映射 但当它开始的时候 无法将事件索引到Elasticsearch.{: state= 解析[start_time]"、"caused_by"=失败 **msgstr"格式无效:\"2019-12-20T15:18:13.000Z\"在\"-12-20T15:18:13.000Z\"** 但是在我的数据库中,我
我在运行conf文件时遇到了这个错误 这是我的会议文件
问题内容: 如何利用ng-message作为数字类型?ngMessage是否支持max和min属性?如果可以,怎么办? 演示链接 来自角度文档的示例链接 问题答案: 作为模块正式引入的版本,因此您需要修复以下问题: 使用版本或更高版本(现在是最新版本)。 包含在HTML中(这是一个单独的脚本)。 声明为模块/应用程序的依赖项。 另请参 见此简短演示 。
问题内容: 有什么方法可以使用Logstash和csv文件从ElasticSearch删除文档?我阅读了Logstash文档,却一无所获,并尝试了一些配置,但是使用操作“删除”却没有任何反应 有人尝试过吗?我应该在配置的输入和过滤器部分添加一些特殊的东西吗?我使用文件插件作为输入,使用csv插件作为过滤器。 问题答案: 绝对可以按照您的建议去做,但是如果您使用的是Logstash 1.5,则需要使