【发布时间】:2021-09-14 04:52:24
【问题描述】:
我正在尝试将数据存储到弹性搜索索引中,列的数据如下所示
C ID
1234
5678
NA
123D D5614 A7890
现在我知道这些数据有点混杂,所以我选择了带有以下属性的文本字段
"mappings": {
"properties":{
"C ID":{"type":"text" , "fields" :{'keyword': {'type':'keyword'}}},
}
}
即使在此之后,我总是会收到错误消息。 无法解析文档 ID 4 中 long 类型的字段 [C ID]
请帮我解决这个问题。我没有给出任何关于 long 不知道为什么会出现此错误的参考
更新
我的代码库
from elasticsearch import Elasticsearrch
ESConnector 是一个负责 kerberos 登录的类。我们在 ESConnector 类下调用 Elasticsearch
es = ESConnector()
if not ex.indices.exist(INDEX):
set = {"settings":{"index":{"number_of_shards":1, "number_of_replicas":1}}
es.indices.create(INDEX, body = set)
mbody = {
"mappings": {
"properties":{
"C ID":{"type":"text" , "fields" :{'keyword': {'type':'keyword'}}},
}
}
}
es.indices.put_mapping(INDEX, body = mbody)
【问题讨论】:
-
您能否分享您的索引的真实映射,因为它可能不是您认为的那样?
GET index/_mapping -
令人惊讶的 index/_mapping 返回 C_ID 类型 as long 。我使用 es.indices.delete(INDEX) 删除了索引,并删除了 kibana 中的模式。当我再次重试时,我得到了同样的错误。
-
问题是第一个“C ID”值是一个数字,所以ES检测为long。您的映射似乎没有正确安装。您是如何创建索引和映射的?
-
是的,首先在python中创建INDEX然后put_mapping
-
你能显示你的代码吗?显然有些事情没有像你期望的那样工作
标签: python elasticsearch kibana