Я новичок в elasticsearch. Я создал индекс по названию удобств и пытаюсь выполнить запрос POST в инструменте Postman, http: // localhost: 9200 / sizes / test / _bulk.
Здесь тип содержимого установлен как application / json вместе с ошибкой, которую он выдает при выполнении запроса.
Здесь показана синтаксическая ошибка в JSON.
Я не могу понять, как индексировать более одного объекта (документа) 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": "Удобства"}
Что по-прежнему дает синтаксическую ошибку.
Что мне не хватает? Благодарность!
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
Как указано в комментариях выше, определенно можно отправить массовый запрос с помощью Postman, его просто нужно правильно отформатировать и отправить в виде необработанного текста, как вы можете видеть ниже:
Также обратите внимание, что раздел заголовков содержит один заголовок HTTP:
ContentType: application/x-ndjson
Связанные вопросы
Новые вопросы
elasticsearch
Elasticsearch - это поисковая система с открытым исходным кодом (Apache 2), распределенная, RESTful, основанная на Lucene.