我在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()