如果文档的字段映射不匹配,Elasticsearch静默失败
我面临着Elasticsearch的一个怪异问题。我的映射指定某个字段的类型为long
。现在我不小心试图索引一些具有string
该字段类型而不是的文档long
。我没有从Elasticsearch得到任何错误,但从未对文档建立索引。当我解决此问题时,文件被索引就好了。
例:
我的映射:
{ "field1": {
"type": "long"
}
}
当我发送此文档时,它会静默失败:
{ "field1": "this is a string"
}
当我发送此消息时,它按预期工作:
{ "field1": 12345
}
有没有办法检测这种错误?
回答:
如果将ignore_malformed 字符串设置为false。如果文档格式不正确,但会引发异常,则不会索引该文档。至少在elasticsearch 1.6.0中。
例:
put testput test/test/_mapping
{
"properties" : {
"title" : {"type" : "string"},
"data" : {"type": "long" ,"ignore_malformed":false}
}
}
put test/test/1
{
"data" : "1",
"title" : "valid coerce string to number"
}
put test/test/2
{
"data" : "hello",
"title" : "invalid number"
}
#Failed Response
{
"error": "MapperParsingException[failed to parse [data]]; nested: NumberFormatException[For input string: \"hello\"]; ",
"status": 400
}
Query with Get fails
get test/test/2
{
"_index": "test",
"_type": "test",
"_id": "2",
"found": false
}
以上是 如果文档的字段映射不匹配,Elasticsearch静默失败 的全部内容, 来源链接: utcz.com/qa/409712.html