`
m635674608
  • 浏览: 5043455 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring Data ElasticSearch parnt/child search

 
阅读更多

http://stackoverflow.com/questions/23730641/parent-child-relationships-in-spring-data-elastic-search

 

父实体类及子实体类的搜索方法如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. @Document(indexName = "parent-child", type = "parent-entity")  
  2.    public class ParentEntity {  
  3.   
  4.   
  5.     @Id  
  6.     private String id;  
  7.     @Field(type = FieldType.String, index = FieldIndex.analyzed, store = true)  
  8.     private String name;  
  9.         // setter/getter  
  10.   
  11.    public ParentEntity() {  
  12.    }  
  13.   
  14.    public ParentEntity(String id, String name) {  
  15.      this.id = id;  
  16.      this.name = name;  
  17.    }  
  18.    }  
  19.   
  20.   
  21.   @Document(indexName = "parent-child", type = "child-entity")  
  22.   public class ChildEntity {  
  23.   
  24.     @Id  
  25.     private String id;  
  26.     @Field(type = FieldType.String, store = true)  
  27.     @Parent(type = "parent-entity")  
  28.     private String parentId;  
  29.     @Field(type = FieldType.String, index = FieldIndex.analyzed, store = true)  
  30.     private String name;  
  31.   
  32.     public ChildEntity() {  
  33.     }  
  34.   
  35.     public ChildEntity(String id, String parentId, String name) {  
  36.      this.id = id;  
  37.      this.parentId = parentId;  
  38.      this.name = name;  
  39.     }  
  40.      }  

// 为父实体类做索引(你还可以使用许多其它的方法做索引 例如: repositories)

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. ParentEntity parent1 = new ParentEntity("parent1", "First Parent");  
  2.     IndexQuery parentIndex1 = new IndexQuery();  
  3.     parentIndex1.setId(parent1.getId());  
  4.     parentIndex1.setObject(parent1);  
  5.     elasticsearchTemplate.index(parentIndex1);  
  6.   
  7.     ParentEntity parent2 = new ParentEntity("parent2", "Second Parent");  
  8.     IndexQuery parentIndex2 = new IndexQuery();  
  9.     parentIndex2.setId(parent2.getId());  
  10.     parentIndex2.setObject(parent2);  
  11.     elasticsearchTemplate.index(parentIndex2);  

// 为子实体类做索引

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. ChildEntity child1 = new ChildEntity("child1", parent1.getId(), "First");  
  2.     IndexQuery childIndex1 = new IndexQuery();  
  3.     childIndex1.setId(child1.getId());  
  4.     childIndex1.setObject(child1);  
  5.     childIndex1.setParentId(child1.getParentId());  
  6.     elasticsearchTemplate.index(childIndex1);  
  7.   
  8.     ChildEntity child2 = new ChildEntity("child2", parent1.getId(), "Second");  
  9.     IndexQuery childIndex2 = new IndexQuery();  
  10.     childIndex2.setId(child2.getId());  
  11.     childIndex2.setObject(child2);  
  12.     childIndex2.setParentId(child2.getParentId());  
  13.     elasticsearchTemplate.index(childIndex2);  

//搜索

对于主从结构的实体类,有三种可选的搜索方法:

1.has children 点击打开链接

2.has parent  点击打开链接

3.top children  点击打开链接

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. QueryBuilder query = topChildrenQuery("child-entity", QueryBuilders.termQuery("name", child1name.toLowerCase()));  
  2.     SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(query).build();  
  3.   
  4.     List<ParentEntity> parents = elasticsearchTemplate.queryForList(searchQuery, ParentEntity.class);  

 

http://blog.csdn.net/wilsonke/article/details/44113785

分享到:
评论

相关推荐

    解决spring-data-elasticsearch 5.4.0 不支持 5.4.1的elasticsearch问题

    在使用Spring Data Elasticsearch框架时,可能会遇到一个常见的问题,即版本兼容性问题。Spring Data Elasticsearch 5.4.0设计时可能并未考虑到与Elasticsearch 5.4.1的完全兼容,导致在升级Elasticsearch到5.4.1后...

    spring-data-elasticsearch中文使用文档

    **Spring-Data-Elasticsearch中文使用文档** Spring Data Elasticsearch 是一个强大的Java库,它使得在Elasticsearch数据库中操作数据变得更加简单。这个框架是Spring Data项目的一部分,它为Elasticsearch提供了...

    Spring Data Elasticsearch API(Spring Data Elasticsearch 开发文档).CHM

    Spring Data Elasticsearch API(Spring Data Elasticsearch 开发文档).CHM。 官网 Spring Data Elasticsearch API

    spring-data-elasticsearch

    Spring Data Elasticsearch是Spring Data项目的一部分,该项目旨在简化数据访问层的开发,提高开发效率。Spring Data Elasticsearch专门用于简化Elasticsearch数据的访问,Elasticsearch是一个高度可扩展的开源全文...

    spring data elasticsearch

    **Spring Data Elasticsearch 深入解析** Spring Data Elasticsearch 是一个由 Spring 社区开发的库,它为使用 Elasticsearch(一个高性能、分布式全文搜索引擎)提供了一种简单且强大的方式。Spring Data Elastic...

    spring data elasticsearch示例

    本示例程序主要是对spring data elasticsearch的实践,包含接口声明查询、注解查询和自定义repository查询。运行TestCase时候,请先将配置文件中ES服务端ip:port配置替换成真是的服务端地址

    springdata_es_demo.zip

    本教程将深入剖析"springdata_es_demo.zip"提供的源码,帮助读者掌握如何利用SpringData Elasticsearch进行数据操作。 首先,我们需要了解SpringData Elasticsearch的基本概念。SpringData Elasticsearch是Spring ...

    spring data elasticsearch示例.zip

    本示例程序主要是对spring data elasticsearch的实践,包含接口声明查询、注解查询和自定义repository查询。运行TestCase时候,请先将配置文件中ES服务端ip:port配置替换成真是的服务端地址

    Spring-Data-Elasticsearch 中文文档

    Spring-Data-Elasticsearch 中文文档

    SpringBoot整合Spring Data Elasticsearch的过程详解

    "SpringBoot整合Spring Data Elasticsearch的过程详解" SpringBoot整合Spring Data Elasticsearch是将SpringBoot框架与Elasticsearch搜索引擎进行整合,以实现数据的搜索和索引功能。下面将详细介绍SpringBoot整合...

    spring-data-elasticsearch基本添删改查,maven项目

    在IT行业中,Spring Data Elasticsearch是一个非常重要的框架,它允许开发者轻松地与Elasticsearch数据库进行交互,实现数据的增删改查操作。本项目是一个基于Maven构建的示例,旨在帮助我们理解如何在实际应用中...

    spring-data-elasticsearch api 离线文档

    spring-data-elasticsearch api 离线文档, spring-data-elasticsearch2.0.2spring-data-elasticsearch api spring-data-elasticsearch api 离线文档

    spring-data-elasticsearch英文版

    Spring Data Elasticsearch是Spring Data项目的一部分,它为Elasticsearch搜索引擎提供了一个集成的解决方案。Elasticsearch是一个开源的搜索引擎,它构建于Apache Lucene之上,旨在提供一个快速、可靠和可扩展的...

    spring mvc 集成elasticSearch 5.5.0版本

    然后,我们需要创建一个ElasticsearchRepository接口,继承自Spring Data Elasticsearch提供的`ElasticsearchRepository`,并指定实体类和ID类型: ```java public interface UserRepository extends Elasticsearch...

    es docker 部署 elasticsearch.yml

    v /Users/xingyue/Home/xingyue/学习/工程化/es/data:/usr/share/elasticsearch/data -v /Users/xingyue/Home/xingyue/学习/工程化/es/config:/usr/share/elasticsearch/config -v /Users/xingyue/Home/xingyue/学习...

    Java进阶教程数据层全栈方案SpringData高级应用视频教程

    5.SpringData ElasticSearch实现CRUD操作 第九章 SpringData MongDB 1.SpringData MongDB简介 2.MongDB环境搭建 3.MongDB基础知识回顾 4.SpringData MongDB入门案例 5.SpringData MongDB实现CRUD操作 第十章 综合...

    Spring 各种例子:Spring Data Elasticsearch,JDBC,JPA,LDAP,MongoDB

    2. Spring Data Elasticsearch:展示了基本文本搜索、地理空间搜索和分面搜索的示例。使用了High Level REST Client作为模板和仓库的后端。 - example:展示了使用基本文本搜索、地理空间搜索和分面搜索的示例。 -...

    spring-data-elasticsearch-reference

    Spring Data Elasticsearch项目是一个将Spring的核心概念应用于使用Elasticsearch搜索引擎开发解决方案的项目。在本参考手册中,我们主要关注Spring Data 2.0.11版本,它包含了对默认RepositoryFactoryBean的支持。 ...

    spring-data-elasticsearch-sample-application-master

    《Spring Data Elasticsearch实战:构建应用示例》 在IT领域,Elasticsearch作为一个强大的全文搜索引擎,因其高效、灵活和可扩展性,被广泛应用于数据检索、日志分析、监控等多种场景。Spring Data Elasticsearch...

Global site tag (gtag.js) - Google Analytics