Массовая вставкаastic4s не работает с несколькими элементами в Json - PullRequest
0 голосов
/ 13 октября 2018

Может кто-нибудь помочь мне, как выполнить массовую вставку с заголовком «Content-Type: application / x-ndjson» вastic4s?Я пробовал это

client.execute { bulk( indexInto("cars" / "car").source(getCarsFromJson) ).refresh(RefreshPolicy.WaitFor) }.await

Это работает для одного элемента в JSON, но когда я добавляю другой элемент в JSON, ни один элемент не добавляется в эластичный.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Метод source в indexInto не будет поддерживать несколько объектов json, потому что вы пытаетесь поместить несколько документов в одну вставку документа.

Вместо этого вам нужно будет взять свой json,разберите его на объекты и переберите их, добавив для каждого документ вставки.

Что-то вроде следующего:

def getCarsFromJson: Seq[String] = /// must return a sequence of json strings
val inserts = getCarsFromJson.map { car => indexInto("cars" /"car").source(car) }
client.execute {
 bulk(inserts:_*).refresh(RefreshPolicy.WaitFor)
}
0 голосов
/ 13 октября 2018

Вы уверены, что используете правильный синтаксис?Разве это не должно сказать

"cars/car" 

Вместо

"cars" / "car" 
...