我想向一个查询匹配的现有文档中添加一个具有新字段的新对象。
PUT test/_doc/1
{
"id" : 1,
"text": "My life is beautiful"
"category": "optimistic"
}
我想在所有“类别”:“乐观”文档中添加一个新对象,例如
{"references": {
"group": "Pro-life",
"responsable": "Mr. Happy Guy"
"job": "Happiness bringer"
}
我想尝试update_by_query
,但不能使它与这样的对象一起使用。有什么想法吗?
我确实尝试过:
{
"script": "ctx._source.references='{\"hello\":\"world\"}'",
"query": {
"match": {
"category": "optimistic"
}
}
}
但是它没有给我预期的结果。它只是将其另存为字符串"""{"hello":"world"}"""
而我希望将其作为JSON对象
答案 0 :(得分:1)
未经测试,但您可以将params
与update_by_query
一起使用,
{
"query": {
"match": {
"category": "optimistic"
}
},
"script": {
"inline": "ctx._source.references = params.new_fields",
"params": {
"new_fields": {
"group": "Pro-life",
"responsable": "Mr. Happy Guy"
"job": "Happyness bringer"
}
}
}
}
答案 1 :(得分:0)
您应该使用painless
语法来做到这一点,像这样尝试:
"script": "ctx._source.references=[ \"hello\":\"world\" ]"