gpt4 book ai didi

elasticsearch - Elasticsearch GeoIp位置不是geo_point类型

转载 作者:行者123 更新时间:2023-12-03 01:41:31 24 4
gpt4 key购买 nike

我正在基于解决方案https://github.com/deviantony/docker-elk使用Docker Compose运行ElasticSearch,Logstash和Kibana。

我正在按照本教程尝试在处理Web日志时添加geoip信息:https://www.elastic.co/blog/geoip-in-the-elastic-stack

在logstash中,我正在处理FileBeat中的文件,并且已将geoip添加到我的过滤器中:

filter {
...

geoip {
source => "client_ip"
}
}

当我在Kibana中查看文档时,它们确实包含其他信息,例如 geoip.country_namegeoip.city_name等。但是我希望 geoip.location字段在我的索引中为 geo_point类型。

这是一些geoip字段如何映射的示例:
Kibana index field types

我看到的不是 geo_point,而是 location.latlocation.lon。为什么我的位置不是 geo_point类型?我需要某种映射等吗?

当ElasticSearch启动时, ingest-commoningest-geoipingest-user-agentx-pack都被加载。我刷新了我在Kibana中的索引的字段列表。

编辑1:

基于@Val的答案,我试图更改索引的映射:
PUT iis-log-*/_mapping/log
{
"properties": {
"geoip": {
"dynamic": true,
"properties": {
"ip": {
"type": "ip"
},
"location": {
"type": "geo_point"
},
"latitude": {
"type": "half_float"
},
"longitude": {
"type": "half_float"
}
}
}
}
}

但这给了我这个错误:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "mapper [geoip.ip] of different type, current_type [text], merged_type [ip]"
}
],
"type": "illegal_argument_exception",
"reason": "mapper [geoip.ip] of different type, current_type [text], merged_type [ip]"
},
"status": 400
}

最佳答案

在您提到的article中,他们确实说明您需要在“映射的映射”部分中为geo_point字段放置特定的映射。

如果您使用默认的索引名称(即logstash-*)和默认的映射类型(即log),则Logstash会为您处理映射。但是,如果没有,则需要使用以下命令自行安装:

PUT your_index
{
"mappings" : {
"_default_" : {
"_all" : {"enabled" : true, "norms" : false},
"dynamic_templates" : [ {
"message_field" : {
"path_match" : "message",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text",
"norms" : false
}
}
}, {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text", "norms" : false,
"fields" : {
"keyword" : { "type": "keyword", "ignore_above": 256 }
}
}
}
} ],
"properties" : {
"@timestamp": { "type": "date", "include_in_all": false },
"@version": { "type": "keyword", "include_in_all": false },
"geoip" : {
"dynamic": true,
"properties" : {
"ip": { "type": "ip" },
"location" : { "type" : "geo_point" },
"latitude" : { "type" : "half_float" },
"longitude" : { "type" : "half_float" }
}
}
}
}
}
}

在上面的映射中,您看到 geoip.location字段被视为 geo_point

关于elasticsearch - Elasticsearch GeoIp位置不是geo_point类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47096456/

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