我是Elasticsearch的新手。我创建了一个名为“舒适性”的索引,并且试图在Postman工具中执行POST请求, http://localhost:9200/amenities/test/_bulk。
在这里,内容类型以及执行请求时给出的错误设置为application / json。
在这里,它显示JSON中的语法错误。
我无法理解如何为多个JSON对象(文档)建立索引。当我仅指定一个文档,但是当我指定两个或多个文档时,JSON无效。
我尝试了以下解决方案:
{“索引”:{}} {“类型”:“厨房”,“位置”:{“ x”:9881.034723869176,“ y”:-12942.49413158995},“ icon”:“餐具”,“类别”:“设施”} {“指数”:{}} {“类型”:“垃圾桶”,“位置”:{“ x”:9170.444649524274,“ y”:-12855.890257805067},“图标”:“垃圾桶”,“类别”:“便利设施”}
{“ index”:{“ _index”:“便利设施”,“ _type”:“测试”}} {“类型”:“厨房”,“位置”:{“ x”:9881.034723869176,“ y”:-12942.49413158995},“ icon”:“餐具”,“类别”:“设施”} {“ index”:{“ _index”:“便利设施”,“ _type”:“测试”}} {“类型”:“垃圾桶”,“位置”:{“ x”:9170.444649524274,“ y”:-12855.890257805067},“图标”:“垃圾桶”,“类别”:“便利设施”}
仍然会给出语法错误。
我想念什么?谢谢!
答案 0 :(得分:2)
如上面的评论所述,使用邮递员发送批量查询绝对是可能的,只需要正确设置格式并以原始文本发送即可,如下所示:
还要注意,标头部分包含一个HTTP标头:
ContentType: application/x-ndjson
答案 1 :(得分:1)
您可以将文档以以下格式(testData.json)放在json文件中:
{"index": {"_index": "animals", "_type": "_doc", "_id": 1}}
{"name": "dog"}
{"index": {"_index": "animals", "_type": "_doc", "_id": 2}}
{"name": "cat"}
并像这样使用curl:
curl -s -H "Content-Type: application/x-ndjson" -XPOST localhost:9200/_bulk --data-binary "@testData.json";
或者如果您想在没有json文件的情况下使用curl:
curl -X POST "localhost:9200/_bulk" -H 'Content-Type: application/json' -d'
{ "index" : { "_index" : "test", "_type" : "_doc", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "_doc", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "_doc", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "_doc", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }'
或者您可以使用更简单的kibana。检查文档_bulk