elastic4s批量插入不适用于Json中的多个元素

时间:2018-10-13 20:41:03

标签: elasticsearch elastic4s

有人可以帮助我,如何在elastic4s中执行带有标头“ Content-Type:application / x-ndjson”的批量插入吗?我已经尝试过了

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

它适用于json中的一个元素,但是当我向json中添加另一个元素时,没有任何元素被添加到Elastic中。

2 个答案:

答案 0 :(得分:0)

确定使用正确的语法吗?不应该说

"cars/car" 

代替

"cars" / "car" 

答案 1 :(得分:0)

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)
}