删除elasticsearch中的字段

时间:2015-01-14 12:22:13

标签: json search elasticsearch

在我的弹性搜索中,我需要删除一个结构看起来像这样的字段:

{"key": 
    {"anotherKey":
               {"firstEntryKey":"firstValue"},
               {"secondEntry":"secondValue"}
      }
}

我想从记录中删除secondEntry,怎么办呢?

我尝试过使用update api,传递一个脚本,但这似乎不起作用:

{"script" : 
         "ctx._source.remove("key.anotherKey.secondEntry")
}

谢谢!

1 个答案:

答案 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

这可以解决您的问题吗?如果没有,请发表评论,我会尝试进一步提供帮助。