Я новичок в elasticsearch. Я создал индекс по названию удобств и пытаюсь выполнить запрос POST в инструменте Postman, http: // localhost: 9200 / sizes / test / _bulk.

Здесь тип содержимого установлен как application / json вместе с ошибкой, которую он выдает при выполнении запроса.

enter image description here

Здесь показана синтаксическая ошибка в JSON.

enter image description here

Я не могу понять, как индексировать более одного объекта (документа) JSON. Это хорошо работает, когда у меня указан только один документ, но JSON становится недействительным, когда я указываю два или более.

Я пробовал следующие решения:

{"index": {}} {"type": "Кухня", "location": {"x": 9881.034723869176, "y": -12942.49413158995}, "icon": "посуда", "category": "Удобства "} {" index ": {}} {" type ":" Мусорное ведро "," location ": {" x ": 9170.444649524274," y ": -12855.890257805067}," icon ":" trash "," category " : "Удобства"}

{"index": {"_index": "удобства", "_type": "test"}} {"type": "Кухня", "location": {"x": 9881.034723869176, "y": -12942.49413158995} , "icon": "посуда", "category": "Удобства"} {"index": {"_index": "удобства", "_type": "test"}} {"type": "Мусорная корзина", "location": {"x": 9170.444649524274, "y": -12855.890257805067}, "icon": "корзина", "category": "Удобства"}

Что по-прежнему дает синтаксическую ошибку.

Что мне не хватает? Благодарность!

0
nrai 23 Окт 2018 в 12:33

2 ответа

Лучший ответ

Вы можете поместить свои документы в файл json в следующем формате (testData.json):

{"index": {"_index": "animals", "_type": "_doc", "_id": 1}}
{"name": "dog"}
{"index": {"_index": "animals", "_type": "_doc", "_id": 2}}
{"name": "cat"}

И используйте завиток вот так:

curl -s -H "Content-Type: application/x-ndjson" -XPOST localhost:9200/_bulk --data-binary "@testData.json";

ИЛИ, если вы хотите использовать curl без файла json:

 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"} }'

ИЛИ вы можете использовать кибану, что намного проще. проверьте документы _bulk

1
Tarek Essam 23 Окт 2018 в 10:11

Как указано в комментариях выше, определенно можно отправить массовый запрос с помощью Postman, его просто нужно правильно отформатировать и отправить в виде необработанного текста, как вы можете видеть ниже:

enter image description here

Также обратите внимание, что раздел заголовков содержит один заголовок HTTP:

ContentType: application/x-ndjson
2
Val 23 Окт 2018 в 11:46
52945740