当前位置: 首页 > 知识库问答 >
问题:

spring数据elasticsearch继承查询无结果

柳珂
2023-03-14

我在继承和ElasticsearchRepository方面有一些问题。我的代码(简短版本):实体:

public abstract class father{
    @Id 
    protected String identifier;

    // constructors
    @Field(type= FieldType.String, index = FieldIndex.not_analyzed)
    public String uri;
    // getter setter
}

/*
* Stored in elastic search
*/
@Document(indexName = "entity1", type = "entity1")
public abstract class sonA extends father{
    // constructors
}

/*
* Stored in elastic search
*/
@Document(indexName = "entity2", type = "entity2")
public abstract class sonB extends father{
    // constructors
}

存储库:

public interface DataBnfRepository extends
        ElasticsearchRepository<SonA, String> {

    public SonA findByUri(String uri);

    @Query("{ \"filtered\":{ \"filter\":{\"term\":{\"uri\":\"?0\"}}}}")
    public SonA findWithUri(String uri);
}

我的问题是:我能够将数据放入弹性搜索中,但无法检索它们。如果我做一个存储库。findall()它可以工作。如果我做一个存储库。findWithUri(uri)它不工作(空结果)findByUri的分析异常

我试图搜索示例:https://github.com/spring-projects/spring-data-elasticsearch/blob/master/src/test/java/org/springframework/data/elasticsearch/entities/SampleInheritedEntity.java但是没有存储库。

我发现:如果我用“foo”替换uri,它是有效的。所以问题是https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_reserved_characters

所以我用

uri=foo:酒吧=

uri=“foo:bar”=

uri=foo \:条=

uri=“foo \:条”=

在它被继承之前,我对代码没有问题。我只是把URI放在一个对象中,repository.save(对象)repository.findNevUri(uri),它给我对象。

非常感谢任何帮助/建议/评论。请。非常感谢

共有1个答案

贝滨海
2023-03-14

尝试以下方法。

findByFatherUri(uri);
 类似资料:
  • 我是elasticsearch的新手,尝试使用查询、日期直方图和facets从elasticsearch检索索引数据。我有elasticsearch和kibana在服务器上正常运行。现在,我想从elasticsearch中提取特定的索引数据,并在另一个自主开发的应用程序(SpringWeb应用程序)中将其绘制为图形。因此,考虑使用spring数据elasticsearch,但通过互联网找到了使用e

  • 我有4个实体: ,,, 和4个表: 现在我想在一个查询中选择所有有课程的用户(如果存在的话)(注意用户没有课程)这个select生成如下所示: 您可以清楚地看到,Hibernate没有与t_student_course表连接 我正在使用Hibernate 4.1 Final 问题:Hibernate支持这样的查询吗 a)如果支持,那么为什么它不为实体获取课程? b)如果不支持,我如何选择所有的用户

  • 我尝试使用下面的elasticsearch查询来处理Spring数据。目的是为字段返回唯一的结果。就像与SQL数据库进行比较一样。 我将该字段配置为关键字,它使查询在api中完美运行,如下所示: 我的问题是,当我尝试使用StringQuery运行时,相同的查询在Spring数据中不起作用,我得到以下错误。我猜它使用不同的api来运行查询。 我尝试过使用类型来实现相同的结果,没有重复和没有对象加载,

  • 我对JPA中的继承是新手。我不知道如何查询这样的内容: 让我们假设一个联接继承映射,其中a是一个具有'id'和'name'的实体。还有从A继承的实体A1和A2。A1提供字段'int1',A2提供字段'int2'

  • 带有Hibernate的Spring数据JPA支持注释和。基于这些,实体类之间的继承映射到DB(单表/联接表https://stackoverflow.com/a/3579462/12053054)。 我找不到任何类似的机制来支持Spring data r2dbc的实体继承。我知道JPA和Hibernate的东西与r2dbc无关,但我认为在Spring data r2dbc存储库中支持继承没有任何

  • 我正在尝试查询spring data elasticsearch存储库中的嵌套属性。我的存储库如下所示: 域对象Person和Address(无getter/setter)定义如下: 我的测试保存一个人的文档,并尝试使用repository方法读取它。但没有返回任何结果。以下是测试方法: spring data elasticsearch是否支持默认的spring数据查询生成?