使用jest在elasticsearch中删除没有父文档的子文档

disbfnqx  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(455)

正如标题所说,我试图用jest删除所有无父的子文档。如果我得到的东西是正确的,我需要使用deletebyquery,我建议的解决方案是:

val allParentlessChildren = QueryBuilders
    .boolQuery()
    .mustNot(JoinQueryBuilders.hasParentQuery(
      "my_parent",
      QueryBuilders.matchAllQuery(),
      false)
    )
val delete = new DeleteByQuery.Builder(allParentlessChildren.toString)
    .addIndex("my_index")
    .addType("my_child")
    .build()

然而,我得到 routing_missing_exception . 在网上调查,似乎我需要为路由设置父类型,然而,除了在 hasParentQuery idk我还需要在哪里添加它?
虽然我找到了一些如何使用restapi的例子,但我找不到使用jest的,所以希望有人能帮上忙。
我用的是ElasticSearch5.5。

yhxst69z

yhxst69z1#

只是需要添加路由,然而,开玩笑的是,它似乎有点隐藏在 setParameter 方法:

val delete = new DeleteByQuery.Builder(allParentlessChildren.toString)
    .addIndex("my_index")
    .addType("my_child")
    .setParameter(Parameters.ROUTING, "my_parent") // <-- added line
    .build()

相关问题