我在Scala中使用Elastic Java API删除文档列表,使用它们的ID一次删除一个文档列表,目前还没有成功。 API对于其他调用(例如SearchResponse)也能正常工作。
我的代码如下所示:

var deleteResp : DeleteResponse = null

deleteResp = ElasticSearch.getClient()
      .prepareDelete(index, type, id)
      .get()

与:相同
deleteResp = ElasticSearch.getClient()
      .prepareDelete(index, type, id)
      .execute()
      .actionGet()

我还尝试使用此功能捕获Elastic Response以进行调试,但是stdout中没有任何显示。
try{ \ previous code }
catch {
    case e: Exception => {
    print("Failed deletion", e.getMessage)
    e.printStackTrace() }
}

配置:
-Scala 2.10.6
- Spark 1.6
-Elasticsearch 2.3.2

谢谢

最佳答案

我猜这是一个非常具体的案例,但是鉴于有关Java API使用情况的信息不多,因此有人可能会发现这种案例很有意义。

感谢Val和精确的调试,我找到了原因:
请注意传递给prepareSearch()的字符串格式。

我的ID来自一个列表,其中包含引起混乱的括号,删除请求成功,但ID错误。

有关详细信息,请考虑对请求对象使用所有可用的方法,并仔细检查每种格式:

var deletedId = deleteResp.getId()
var deletedType = deleteResp.getType()
var deletedIndex = deleteResp.getIndex()
var deletedShard = deleteResp.getShardInfo()

10-07 17:02