gpt4 book ai didi

spring-data-elasticsearch - 是否支持在存储库或查询注释中删除路由?

转载 作者:行者123 更新时间:2023-12-02 05:20:01 26 4
gpt4 key购买 nike

我正在尝试删除 spring data elasticsearch 存储库中的一个文档。并且找不到解决此错误的方法:

[userindex] RoutingMissingException[routing is required for [userindex]/[address]/[12]

我有两个链接文档:

@Document(indexName = "userindex", type = "user")
public class User {

@Field(index = FieldIndex.not_analyzed, type = FieldType.Long)
private Long userId;
...
}

@Document(indexName = "userindex", type = "address")
public class Address {

@Field(type = FieldType.String)
private String name;

@Field(index = FieldIndex.not_analyzed, type = FieldType.String)
private String addressId;

@Field(type = FieldType.String, store = true)
@Parent(type = "user")
private String parentId;
...
}

当我尝试使用标准方法 delete(Long id) 通过 ElasticsearchCrudRepository 删除一个地址时,我收到了上述 RoutingMissingException。

如果我尝试使用 ElasticSeach 客户端来执行此操作,如下所示:

  client.prepareDelete().setIndex("userindex")
.setType("address")
.setParent("user")
.setId(id.toString())
.execute().get();

一切正常,但在我看来直接与客户端一起工作并不是 spring-data 的方式。

我也找不到任何方法如何使用注释 org.springframework.data.elasticsearch.annotations.Query 自定义删除方法。我检查了 org.springframework.data.elasticsearch.core.ElasticsearchTemplate 的来源,但找不到任何方法来添加对删除查询的支持。

有人知道如何解决它而不是使用客户端吗?

spring-data-elasticsearch版本为2.0.1

更新 03.05.2017

首先,在我的代码中,我的删除是一个错误,以前不是这样,但应该是:

  client.prepareDelete().setIndex("userindex")
.setType("address")
.setParent("500")
.setId(id.toString())
.execute().get();

这里的500是父id而不是类型名。现在关于 spring-data 方式。 elasticsearch 集成中没有 spring-data 方式。

证明:

DATAES-257

DATAES-331

最佳答案

如果您想以 Spring 的方式进行操作,可以使用与 RestTemplate 非常相似的 ElasticsearchTemplate。ElasticsearchTemplate 有deleteIndex() 函数可以删除整个索引。此外,您还可以使用模板做很多其他事情。带有删除索引的示例项目在这里:https://github.com/TechPrimers/spring-data-elastic-example-4/blob/master/src/main/java/com/techprimers/elastic/resource/SearchResource.java

代码:

@Autowired
ElasticsearchTemplate template;

template.deleteIndex(Users.class);

关于spring-data-elasticsearch - 是否支持在存储库或查询注释中删除路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37736341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com