我有一个弹性搜索索引,我用它来索引一组文档。
这些文档最初是csv格式,我正在使用logstash解析它们。
我的Logstash配置文件是。
input {
file {
path => "/csv_files_for_logstash/app1lg.csv"
type => "core2"
start_position => "beginning"
} }
filter {
csv {
separator => ","
columns=> ["Date","Package Name","App Version Code","Current Device Installs","Daily Device Installs","Daily Device Uninstalls","Daily Device Upgrades","Current User Installs","Total User Installs","Daily User Installs","Daily User Uninstalls"]
}
mutate {convert => ["App Version Code", "string"]}
mutate {convert => ["Current Device Installs", "float"]}
mutate {convert => ["Daily Device Installs", "float"]}
mutate {convert => ["Daily Device Uninstalls", "float"]}
mutate {convert => ["Current User Installs", "float"]}
mutate {convert => ["Total User Installs", "float"]}
mutate {convert => ["Daily User Installs", "float"]}
mutate {convert => ["Daily User Uninstalls", "float"]}
ruby {
code => '
b = event["App Version Code"]
string2=""
for counter in (3..(b.size-1))
if counter == 4
string2+= "."+ b[counter]
elsif counter == 6
string2+= "("+b[counter]
elsif counter == 8
string2+= b[counter] + ")"
else
string2+= b[counter]
end
end
event["App Version Code"] = string2
'
}
}
output {
elasticsearch {
embedded => true
action => "index"
host => "es"
index => "fivetry"
workers => 1
}
stdout{
codec => rubydebug {
}
}
}
现在我的字段值(应用版本代码)看起来像" 123456789"在csv我解析为" 4.56(789)"使用Ruby代码。
此术语将其分解为不同的值,因为这不是分析。
我知道还有其他方法可以创建映射并将其设置为not_ananlysed,但我不知道如何制作,所以
有没有办法只用我的logstash配置文件来设置这个not_analysed?
此外,
在Kibana中没有.raw字段,我可以使用确切的字符串。
谢谢和问候,
答案 0 :(得分:2)
您无法通过Logstash配置设置映射。映射与Logstash无关,只与Elasticsearch有关。
在插入这些文档之前,你需要在Elasticsearch中预先映射这些字段,你可以创建索引,然后使用映射API来设置映射,或者你可以使用索引模板这样做,这将允许你在没有最初创建索引的情况下创建映射。
答案 1 :(得分:0)
Logstash提供了用于新索引的默认模板。您可以编辑此文件,但这不是一个好主意(它会在升级时被覆盖等)。
elasticsearch{} output允许您指定自己使用的模板而不是默认模板。