我在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响应以进行调试,但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
谢谢
答案 0 :(得分:1)
我想这是一个非常具体的案例,但鉴于Java API使用情况不佳,有人可能会发现这种情况相关。
感谢Val和精确调试我找到了原因: 对传递给prepareSearch()的字符串格式要非常小心。
我的ID来自列表,其中包含一些混乱的括号,删除请求成功但ID错误。
有关详细信息,请考虑在请求对象上使用所有可用方法,并仔细检查每个格式:
var deletedId = deleteResp.getId()
var deletedType = deleteResp.getType()
var deletedIndex = deleteResp.getIndex()
var deletedShard = deleteResp.getShardInfo()