在我的弹性搜索中,我需要删除一个结构看起来像这样的字段:
{"key":
{"anotherKey":
{"firstEntryKey":"firstValue"},
{"secondEntry":"secondValue"}
}
}
我想从记录中删除secondEntry,怎么办呢?
我尝试过使用update api,传递一个脚本,但这似乎不起作用:
{"script" :
"ctx._source.remove("key.anotherKey.secondEntry")
}
谢谢!
答案 0 :(得分:1)
由于您发布的文件似乎不合法,我假设您的意思是:
{
"key": {
"anotherKey": {
"firstEntryKey": "firstValue",
"secondEntry": "secondValue"
}
}
}
因此,如果我创建索引并发布该文档,
DELETE /test_index
PUT /test_index
PUT /test_index/doc/1
{
"key": {
"anotherKey": {
"firstEntryKey": "firstValue",
"secondEntry": "secondValue"
}
}
}
GET /test_index/doc/1
...
{
"_index": "test_index",
"_type": "doc",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"key": {
"anotherKey": {
"firstEntryKey": "firstValue",
"secondEntry": "secondValue"
}
}
}
}
然后用新版本更新文档,我回到新版本:
PUT /test_index/doc/1
{
"key": {
"anotherKey": {
"firstEntryKey": "firstValue"
}
}
}
GET /test_index/doc/1
...
{
"_index": "test_index",
"_type": "doc",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"key": {
"anotherKey": {
"firstEntryKey": "firstValue"
}
}
}
}
以下是我使用的代码:
http://sense.qbox.io/gist/fb38750594550d4bf7f8a168883a168c7adc3d49
这可以解决您的问题吗?如果没有,请发表评论,我会尝试进一步提供帮助。