如果我这样做:
curl -X POST http://elasticsearch:9200/myProject/customer/59d56aadaedef10001c4d023/_create -d @ es.json
反对我在Kubernetes的弹性集群
es.json
{
"id": "59d56aadaedef10001c4d023",
"displayId": "A-18",
"agentId": "59d291aee1e6480020b5f042",
"firstName": "Dieter",
"lastName": "adsadsdsa",
"birthday": "1990-01-01T00:00:00.000Z",
"email": "adsdas@someDomain.de",
"phone": "0912312312",
"zipCode": "123412",
"city": "Hannover",
"street": "undefined"
}, query: {}
我明白了:
{
"error" : "MapperParsingException[failed to parse [id]]; nested: NumberFormatException[For input string: \"59d56aadaedef10001c4d023\"]; ",
"status" : 400
}
知道我做错了吗?
答案 0 :(得分:0)
这是一个简单的Elasticsearch错误(与kubernetes无关),由动态映射引起的已经确定您的id
字段是一个数字。当您第一次发送字段时,就会发生动态映射,并且从那里开始,您需要遵守该映射。
您可以通过请求映射索引来查看动态映射已决定的内容:
GET myProject/_mapping
我认为,克服这种映射问题的最佳实践方法总是首先创建映射,甚至可能禁用动态映射(Dynamic Mapping documentation)
在创建索引(Create Index > Mapping documentation)或之后(Put mappings documentation)
期间添加映射