noo*_*eer 14 json elasticsearch
我正在尝试将一个JSON发送到elasticSearch.我尝试过使用Postman和SOAPUI数据是
[{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"}, {"column1": "pqr", "column2": "stu", "column3": "vwx", "column4": "", "column5": ""}]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
{
"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
}
Run Code Online (Sandbox Code Playgroud)
但是当我发布一个JSON数组时
{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"}
Run Code Online (Sandbox Code Playgroud)
然后它工作正常.我是ElasticSearch的新手,所以不确定出了什么问题.
hel*_*l11 11
首先尝试使用花括号,然后命名数组.试试看,看看它是否有效.
例如:
{root:[1, 2, 3, 4, 5]}
Run Code Online (Sandbox Code Playgroud)
可能会工作,因为它包含在一个对象中.
更好; 在我进行实验时JSON.stringify();,我发现它将数组转换为JSON,如下所示:
{1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)
谢谢@ hellol11
当我换到时它起作用了
{root :
[
{"column1": "abc", "column2": "def", "column3": "dghi", "column4": "jkl", "column5": "mno"},
{"column1": "pqr", "column2": "stu", "column3": "vwx", "column4": "", "column5": ""}
]}
Run Code Online (Sandbox Code Playgroud)
我最近使用curl遇到了这个问题,这是一个简单的错字。我不是使用内联json,而是使用文件。我忘了在文件名前加上@符号。
curl -XPUT -H'Content-Type:application/json' localhost:9200/twitter -d@mappings.json
Run Code Online (Sandbox Code Playgroud)
小智 5
我在尝试 POST 到 ES 的 Python 脚本(使用请求)中遇到了这个问题。解决方案只是使用以下命令将 json 对象转换为字符串json.dumps()
示例(Python snipit):
import json
import requests
headers={'Content-Type': 'application/json'}
data={'hello':'barney'}
response = requests.post('https://<my_es_domain>/<my_es_ix>/<my_doc_type>', data=json.dumps(data), headers=headers)
Run Code Online (Sandbox Code Playgroud)