1. 程式人生 > >spring data elastic search初識

spring data elastic search初識

首先pom檔案裡依賴:

		<!-- Elastic search-->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-elasticsearch</artifactId>
			<version>1.1.3.RELEASE</version>
		</dependency>
配置elastic
   <elasticsearch:repositories base-package="com.*.dao" />

    <elasticsearch:transport-client id="client" cluster-nodes="@{elasticsearch.clusterNodes}" cluster-name="@{elasticsearch.clusterName}" />

    <bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
        <constructor-arg name="client" ref="client"/>
    </bean>

<elasticsearch: 目前不全,可以改用常用注入bean方式:

    <bean id="client" class="org.springframework.data.elasticsearch.client.TransportClientFactoryBean" >

        <property name="clusterNodes" value="ip:port,ip:port"/>
        <property name="clusterName" value="myelasticsearch"/>
        <property name="properties" >
          <props>
              <prop key="sh" >cass</prop>
              <prop key=""></prop>
          </props>
      </property>

     </bean>


定義的文件結構:

@Document(indexName = "product-index",type = "PRODUCT",shards = 1, replicas = 1 ,refreshInterval = "-1")
public class ProductDocument {
    private
    @Id
    String id;
private  @Field(type = Nested)List<CityBean> bookCityCode;

}


Dao 

public interface ProductDocumentRepository extends ElasticsearchRepository<ProductDocument,String> {

    public ProductDocument findByProductId(long productId);
}

spring data會自動生成repository 的實現類。

也可以寫查詢的query:

結構bean:

@Data
@Builder
@Document(indexName = "conference-index", shards = 1, replicas = 0, indexStoreType = "memory", refreshInterval = "-1")
public class Conference {

	private @Id
	String id;
	private String name;
	private @Field(type = Date) String date;
	private @GeoPointField
	String location;
	private List<String> keywords;

	private  List<CityBean> cityBeans;

	// do not remove it
	public Conference() {}

	// do not remove it - work around for lombok generated constructor for all params
	public Conference(String id, String name, String date, String location, List<String> keywords,List<CityBean> cityBeans) {

		this.id = id;
		this.name = name;
		this.date = date;
		this.location = location;
		this.keywords = keywords;
		this.cityBeans=cityBeans;
	}
}

public class CityBean {
    private int code;
    private String name;
}

DAO :
<pre name="code" class="java">public interface ConferenceRepository extends ElasticsearchRepository<Conference, String> {

    @Query("{\"bool\":{\"must\":[{\"nested\":{\"path\":\"cityBeans\",\"query\":{\"bool\":{\"must\":[{\"match\":{\"cityBeans.code\":?0}}]}}}}]}}" )
    public List<Conference> findByCityCode(int code,Pageable pageable);
}


t呼叫查詢:

List<Conference> conferences=repository.findByCityCode(1602,new PageRequest(0,20));

另外一種查詢方式:
QueryBuilder builder = QueryBuilders.nestedQuery("cityBeans", QueryBuilders.boolQuery().must(termQuery("cityBeans.code", 1602)));
		QueryBuilder builder1=QueryBuilders.boolQuery().must(builder);
		Iterable<Conference> result4 =repository.search(builder1);


相關推薦

spring data elastic search初識

首先pom檔案裡依賴: <!-- Elastic search--> <dependency> <groupId>org.springframework.data</groupId> <artifac

Elastic Search初識之吐槽

摘要 對於Elastic Search的初始印象就是全文字搜尋,與SOLR是競品。它與其他的儲存型資料庫有何區別,為什麼其他資料庫已經能夠提供文字搜尋功能了,還需要ES等一系列問題都是心中的困惑。這篇文章主要就是總結這些問題以及Elastic Search的概

初識spring data mongodb

話不多說上demo:         首選配置檔案,主要是連線mongodb資料庫使用: application.properties spring.data.mongodb.host=127.0.0.1 spring.data.mongodb.p

Elastic Search(es) spring ElasticsearchTemplate查詢

1. 單個欄位多個值查詢termsQuery  termsQuery 是完全匹配(es建庫的時候一定設定該欄位為 not_analysis) 一次search時,限定sku欄位=sku1或者sku2或者為""  特別強調一下 空字串"" 也是可以完全匹配的 程式碼如下

Spring Boot 2.x(十七):快速入門Elastic Search

What —— Elasticsearch是什麼? Elasticsearch是一個基於Lucene的搜尋伺服器,Elasticsearch也是使用Java編寫的,它的內部使用Lucene做索引與搜尋,但是它的目的是使用全文檢索變得簡單,通過隱藏Lucene的複雜性,取而代之的提供一套簡單一致的RESTful

初識Elastic search—附《Elasticsearch權威指南—官方guide的譯文》

本文作為Elastic search系列的開篇之作,簡要介紹其簡要歷史、安裝及基本概念和核心模組。  簡史 Elastic search基於Lucene(資訊檢索引擎,ES裡一個index—索引,一個索引指向一個或者多個分片—shards,一個分片就是一個Lucen

Spring Data JPA 實例查詢

customer 數據庫表 查詢方式 記錄 如何 三、認識“實例查詢” 1、概念定義: 上面例子中,是這樣創建“實例”的:Example<Customer> ex = Example.of(customer, matcher);我們看到,Example對象,由custom

Spring Data Jpa緩存介紹

級別 instance osc vid group 進程 config 詳細配置 oca 一級緩存: 會話session、事務級別的,事務退出,緩存就失效了。以id為標識 實體管理器-數據源 操作數據拷貝而非數據源。 二級緩存: 線程級或集群級,以id為標識放到緩存(針

SpringData系列一Spring Data的環境搭建

vendor ssi over str spa ger repos getbean date  本節作為主要講解Spring Data的環境搭建 JPA Spring Data :致力於減少數據訪問層(DAO)的開發量。開發者唯一要做的就是聲音持久層的接口,其他都交給

SpringBoot中使用Spring Data Jpa 實現簡單的動態查詢的兩種方法

ppr eat value table 得到 blog .net ride integer 首先謝謝大佬的簡書文章:http://www.jianshu.com/p/45ad65690e33# 這篇文章中講的是spring中使用spring data jpa,使用了xml配

關於spring-data-mongodb用戶名密碼登錄報錯問題:Failed to authenticate to database

數據 base 設置 thread read ber ram tro pat 一.問題   1.spring-data-mongodb用戶名密碼登錄報錯問題:Failed to authenticate to database org.springframew

spring boot + spring data jpa

分享 users pac frame 配置文件 .sql lda hash chan Spring Data Repository的核心接口是Repository(好像也沒什麽好驚訝的)。這個接口需要領域類(Domain Class)跟領域類的ID類型作為參數。這個接

Spring Boot入門第二天:一個基於Spring Boot的Web應用,使用了Spring Data JPA和Freemarker。

per pan let mysq 應用 posit ble host thead 今天打算從數據庫中取數據,並展示到視圖中。不多說,先上圖: 第一步:添加依賴。打開pom.xml文件,添加必要的依賴,完整代碼如下: <?xml version="1.0" enco

Spring Data Rest如何暴露ID字段

account edi posit rest pri return ride efault adapter /** * restful默認不返回主鍵id, 需要新增配置文件 */ @Configuration class SpringDataRestConfig {

Spring Data 介紹 (一)

tin 可能 動態 javac 行高 spec 增加 核心概念 一個 簡介   Spring Data是什麽       Spring Data是一個用於簡化數據庫訪問,並支持雲服務的開源框架。其主要目標是使得對數據的訪問變得方便快捷 Spring Data JPA能幹什麽

Spring Data HelloWorld(三)

system out factor 環境搭建 spring string rep ret gda 在 Spring Data 環境搭建(二) 的基礎之上 我們改動 http://www.cnblogs.com/fzng/p/7253068.html 定義個一個接口 繼承

Spring Data 開發環境搭建(二)

是不是 lns utf-8 void ext for 實體類 connect domain 首先咱們先創建一個maven工程 在pom.xml加入以下 依賴 <!--Mysql 驅動包--> <dependency> <

Spring Data 關於Repository的介紹(四)

聲明 except int pre dcl import type esc return Repository類的定義: public interface Repository<T, ID extends Serializable> { } 1)Rep

spring data整合elasticsearch的applicationContext.xml文件模板

col ext sch host sca pre can -s xsd <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/

spring data jpa 關聯設計

join umt table cto ring pre any collect rate MAP關聯實體 // @ElementCollection @OneToMany(cascade = {CascadeType.ALL})// @JoinColumn