gpt4 book ai didi

elasticsearch - 按复杂对象字段查询

转载 作者:行者123 更新时间:2023-12-03 01:27:34 25 4
gpt4 key购买 nike

考虑具有复杂对象字段的文档:

@Getter  @Setter
@Document
class A{
@Id
private String id;

@Field(
type = FieldType.Object,
includeInParent = true
)
private B b;
}

@Getter @Setter
class B{
String field1;
C c;
}

@Getter @Setter
class C{
String field1;
}

public interface ARepo extends ElasticsearchRepository<A, String> {
Optional<A> findByB(B b);
}


当我执行 aRepo.findByB(someB) ,构建的查询不会提取 B字段,但包含 someB.toString() 的结果作为字段的过滤器 b .

我有 JPA 背景并期望类似的行为。如果不支持,对于此类查询,推荐的方法是什么?

谢谢

最佳答案

您正在查找的内容相当于 Query By Example (QBE),这在 Spring-Data-ES 中尚不支持。

如果您的映射是由应用程序确定的(@Field 在具有@Mapping 和dynamic mapping 设置为false 的字段上),并且通过查看公共(public)interface ElasticsearchRepository<...> 来确定,则搜索类对象应取决于您的映射。 - 您必须使用 QueryBuilder 手动构建查询(弹性抽象)或 Criteria (Spring-Data-ES 抽象)然后 customizing your repository .

如果您的映射不是由应用程序确定的(之前已经设置为弹性),您必须知道它field types (是“文本”、“关键字”等),那么每种类型可能会有不同的行为(匹配查询、术语查询、过滤器等)——这也必须使用 QueryBuilder 或标准。

关于elasticsearch - 按复杂对象字段查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693374/

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