, например:Как вставить несколько записей в один запрос?
curl -XPUT 'http://localhost:9200/test/users/2' -d '{ "firstname" : "test" }'
вставка только одна запись.
Как вставить несколько записей в один запрос?
, например:Как вставить несколько записей в один запрос?
curl -XPUT 'http://localhost:9200/test/users/2' -d '{ "firstname" : "test" }'
вставка только одна запись.
Как вставить несколько записей в один запрос?
Вам необходимо использовать elasticsearch Bulk API. Он позволяет вставлять несколько элементов с одним запросом. Запросы вывешены на специальной конечной точке /_bulk
и выглядеть следующим образом:
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "field1" : "value2" }
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
не хватает кармы на комментарий в ответ на @Tadzys, но да, навалочных вкладывание документов на один или несколько индексов без идентификатора кажется выполнимым , См. «Вставка документов, относящихся к разным типам и индексам в одном запросе», в Elasticsearch: Bulk Inserting Examples.
Из указанной страницы:
POST http://path.to.your.cluster/_bulk
{ "index":{ "_index": "myIndex", "_type": "person" } }
{ "name":"john doe","age":25 }
{ "index":{ "_index": "myOtherIndex", "_type": "dog" } }
{ "name":"fido","breed":"chihuahua" }
"Примеры работы для версий Elasticsearch 1.x, 2.x и, вероятно, более поздних тоже."
Лучше поздно, чем никогда. Это, как я сделал завиток запрос на упругом сервер сбросить несколько записей с помощью основной массы API
curl -XPOST 'http://<my_host_name>:9201/_bulk?pretty' -H 'Content-Type: application/json' -d '{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "1"} }{"id" : "AAA" , "name" : "AAAAAAAAAAAAAA"}{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "2"} }{"id" : "BBB" , "name" : "BBBBBBBBBBBBBBB"}{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "3"} }{"id" : "CCC" , "name" : "CCCCCCCCCCCCCCCC"}{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "4"} }{"id" : "DDD" , "name" : "DDDDDDDDDDDDDDDDDD"}{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "5"} }{"id" : "EEE" , "name" : "EEEEEEEEEEEEEEEEEE"}'
P.S: Эластичный 5.x (по крайней мере), кажется, не позволяют создать насыпной без атрибута идентификатора. Пришлось мучительно придумать один за 100-е из таких записей
Есть ли способ генерировать данные в таком формате из другого индекса упругости? –
[Hari K Murthy] (https://stackoverflow.com/users/2960499/hari-k-murthy) любая причина не использовать ** "index" ** действие вместо ** "create" ** если вы хотите автогенерированные идентификаторы? из того, что я понимаю, единственное различие между этими двумя конечными точками состоит в том, что ** «создать» ** требует идентификатора и будет терпеть неудачу в случае дубликатов. –
Все ответы выше правильные. У меня есть более конкретный для вас.
порт , а не 9201 как ответ @Hari K Murthy. Или, может быть, есть и другие конфигурации.
Почтовый адрес: http://127.0.0.1:9200/_bulk?pretty
. Вы можете изменить свой собственный IP-адрес.
Опубликовано JSON является:
{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "1"} }
{"id" : "AAA" , "name" : "AAAAAAAAAAAAAA"}
{ "create" : { "_index" : "my_index", "_type" : "my_document_type", "_id" : "2"} }
{"id" : "BBB" , "name" : "BBBBBBBBBBBBBBB"}
ПРИМЕЧАНИЕ: Вы должны отформатировать JSON как один метаданных линии, другой линии данных как bulk api doc говорит.
@ konstantin-v-salkhov Что делать, если я хочу вставить документы для одного и того же индекса и того же типа и хочу использовать автоматически сгенерированные идентификаторы, есть ли возможность набрать: '{" index ": {" _index ":" test "," _type ":" type1 "}}' только один раз, а затем только сами документы? Наверное, нет, поскольку я не мог найти его в документации, но это было бы неплохой функцией. – Tadzys
autogenerated ids действительно работают с действием «index» –