弹性搜索批量上传不继承预定义映射
Elastic Search bulk upload not inheriting predefined mapping
我正在尝试使用 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 中的 Discover 仪表板时,文件大小字段的内容仍然是一个已分析的文本字段。这是一个问题,因为我想将它用作 Kibana 可视化中的分桶数字。
我试图在 JSON 文件上使用一些正则表达式来解决这个问题,以便它读取时不带整数引号:
{
...
"filesize" : 123456
}
然后我再次执行整个删除 index/create mapping/re-upload 过程,结果相同:Elastic 仍然相信它是一个文本字段。
我是不是做错了什么?还是我错过了一条相关信息,这意味着这将不起作用?
我知道我可以通过 LogStash 获得结果,但我正在尝试删除任何处理步骤以简化正在构建的这部分应用程序。
备案:
弹性版本 - 2.2.0
Kibana 版本 - 4.4.1
好的,我明白了。
基本上删除索引时我只是运行一个"DELETE my_index"。尝试重新上传数据时,映射和所有其他相关内容保持不变。
我只是运行一个"DELETE _all",然后做了我的映射,然后重新上传数据,然后创建了新索引,现在一切正常。
我正在尝试使用 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 中的 Discover 仪表板时,文件大小字段的内容仍然是一个已分析的文本字段。这是一个问题,因为我想将它用作 Kibana 可视化中的分桶数字。
我试图在 JSON 文件上使用一些正则表达式来解决这个问题,以便它读取时不带整数引号:
{
...
"filesize" : 123456
}
然后我再次执行整个删除 index/create mapping/re-upload 过程,结果相同:Elastic 仍然相信它是一个文本字段。
我是不是做错了什么?还是我错过了一条相关信息,这意味着这将不起作用?
我知道我可以通过 LogStash 获得结果,但我正在尝试删除任何处理步骤以简化正在构建的这部分应用程序。
备案:
弹性版本 - 2.2.0
Kibana 版本 - 4.4.1
好的,我明白了。
基本上删除索引时我只是运行一个"DELETE my_index"。尝试重新上传数据时,映射和所有其他相关内容保持不变。
我只是运行一个"DELETE _all",然后做了我的映射,然后重新上传数据,然后创建了新索引,现在一切正常。