我想从数组中删除一个元素,如下所示我在elasticsearchs中使用elastic4s插入了一个testindiex,类型为test,文档中包含一个Array。
我想从会员中删除ex:tony的值 - 我该怎么做
val insert = client.execute {
indexInto("testindex"/"test") id 1 fields(
"members" -> Array(
"tony",
"salvidor",
"bobby"
),
"crews" -> Seq(
"gualtieri",
"baccalieri",
"barese",
"moltisanti"
)
)
}.await
我在这做了什么:
val deleted=client.execute {
deleteIn("testindex"/"test").by(termQuery("crews","gualtieri"))
}.await
但这会删除整个文档而不是单个记录,请帮助我。
答案 0 :(得分:0)
从Elasticsearch的嵌套/数组JSON中删除/更新元素
输入:JSON文档
{
"members" -> Array(
"tony",
"salvidor",
"bobby"
),
"crews" ->
"gualtieri"
)
下面的命令用于添加和删除数组中的元素
添加命令:在JSON文档中向元素添加元素
val resp = client.execute { updateIn(indexname,doctype).query("crews", "gualtieri") script {
script("ctx._source.members.add(params.key)").params(Map("key"->"space"))
} }.await
remove命令:从JSON文档中的数组中删除元素
val resp1 = client.execute { updateIn(indexname,doctype).query("crews", "gualtieri") script {
script("ctx._source.members.remove(ctx._source.members.indexOf('salvidor'))")
//.params(Map("key"->"abc"))
} }.await
removeAll命令:从数组中删除所有相同的元素。
val resp2 = client.execute { updateIn("testindex","test").query("crews", "gualtieri") script {
script("ctx._source.members.removeAll(Collections.singleton('space'))")
} }.await