发送数据时发生ElasticSearch错误
问题描述:
我正在尝试将JSON发送到elasticSearch。我一直在使用邮差和SOAPUI 的数据发送数据时发生ElasticSearch错误
[{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"}, {"column1": "pqr", "column2": "stu", "column3": "vwx", "column4": "", "column5": ""}]
我收到以下错误回
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "failed to parse"
}
],
"type": "mapper_parsing_exception",
"reason": "failed to parse",
"caused_by": {
"type": "not_x_content_exception",
"reason": "Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"
}
},
"status": 400
}
试图但是当我发布一个JSON阵列即
{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"}
然后它工作正常。我是ElasticSearch的新手,因此不确定发生了什么问题。
答
先尝试使用大括号,然后命名数组。它被称为JSON的原因,所以试试看,看看它是否工作。
例如:
{root:[1, 2, 3, 4, 5]}
可能会奏效,因为它包含的对象内。
更好;当我和JSON.stringify();
实验,我发现它覆羽阵列JSON像这样:
{1, 2, 3, 4, 5}
答
感谢@ hellol11
它工作时,我改变
{root :
[
{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"},
{"column1": "pqr", "column2": "stu", "column3": "vwx", "column4": "", "column5": ""}
]}
+1
你用什么命令发布你的json? – Techiee
答
在Windows环境下,我解决了这个问题。
-d plus double quotation(")
和环绕名称用反斜杠加双quotaton(\“)
命令>
curl (more-option) -d "{\"column1\": \"abc\", \"column2\": \"def\", \"column3\": \"dghi\", \"column4\": \"jkl\", \"column5\": \"mno\"}"
答
在弹性的搜索,如果你想发布大量数据,则每个列表对象必须在新行.so如果您正在使用的感觉,然后使所有在新行或如果使用代码然后添加新行字符\ n ...
答
我最近遇到了这个使用curl,这是一个简单的错字。我没有使用内联json,而是来自一个文件。我忘了在文件名之前加入@符号。
curl -XPUT -H'Content-Type:application/json' localhost:9200/twitter [email protected]
感谢回答,但不知道你的意思 – noobEngineer
-1,虽然这是朝着正确的答案领先的,它不是真正的解释,并否定的语气实在是没有帮助的。原始问题具有有效的JSON,它是一个单元素数组。此问题的答案是ElasticSearch要求最外层的文档是JSON对象,而不是JSON数组或标量值。在这种情况下,示例重构也会很好,并且不会太长。 –