使用 Jest 在 Elasticsearch 中删除没有 parent 的 child 文档

Delete child documents without parent in Elasticsearch using Jest

正如标题所说,我正在尝试使用 Jest 删除所有 parentless child 文档。如果我做对了,我需要使用 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_exceptionInvestigating online,似乎我需要为路由设置 parent 类型,但是,除了在 hasParentQuery 中指定它之外,我还需要在哪里添加它?

虽然我找到了 some examples 如何使用 REST API,但我找不到使用 Jest 的方法,所以希望有人能帮忙。

我正在使用 Elasticsearch 5.5。

只需要添加路由,然而,在 Jest 中它似乎稍微隐藏在 setParameter 方法中:

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