gpt4 book ai didi

json - Elastic Search批量上传不继承预定义的映射

转载 作者:行者123 更新时间:2023-12-03 00:16:20 25 4
gpt4 key购买 nike

我正在尝试使用bulk upload方法将JSON内容上传到Elastic中,但情况是创建该JSON的导出应用程序并未完全给出干净的JSON。一个例子:

{ 
...
"filesize" : "123456"
}

当我批量上传时,Elastic将字段“filesize”解释为字符串,因此我决定尝试使用 create a mapping,以便Elastic尝试将其读取为整数。我不完全确定这是正确的处理方式,因为我不相信字段映射会强制执行从字符串到数字的转换,但还是值得一试。

我的映射是这样的:
PUT /my_index/
{
"mappings": {
"my_item": {
"properties": {
"sub_item_a": {
"properties" :{
"sub_item_b": {
"properties": {
"filesize": {
"type": "integer"
}
}
}
}
}
}
}
}
}

创建此映射后,我通过以下方法检查了映射:
GET /my_index/my_item/_mapping

这确认了映射已到位,因此我导入了数据,再次检查了映射并确认它仍然正确(并正确地嵌套在所有动态分析的其他内容中)。

但是,当我转到Kibana中的“发现”仪表板时,文件大小字段的内容仍然是经过分析的文本字段。这是一个问题,因为我想将其用作Kibana可视化中的存储桶数。

我试图通过在JSON文件上使用一些正则表达式来解决此问题,以使其读取时不会在整数周围加上引号:
{ 
...
"filesize" : 123456
}

然后,我再次执行了整个删除索引/创建映射/重新上传过程,并且发生了相同的结果:Elastic仍然确信这是一个文本字段。

我做错什么了吗?还是我错过了一条相关信息,这意味着它行不通?

我知道我可以通过LogStash达到结果,但是我正在尝试删除所有处理步骤以简化正在构建的应用程序的这一部分。

作为记录:

flex 版本-2.2.0

Kibana版本-4.4.1

最佳答案

好吧,我知道了。

基本上,当删除索引时,我只是运行了“DELETE my_index”。尝试重新上传数据时,映射和所有其他关联的内容保持不变。

我只是运行了“DELETE _all”,然后进行了映射,然后重新上传了数据,然后创建了新索引,现在一切正常。

关于json - Elastic Search批量上传不继承预定义的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35905893/

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