日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories

發布時間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二、Elasticsearch Repositories

2.1、簡介

2.1.1、Spring命名空間

  Spring Data Elasticsearch模塊包含一個允許定義存儲庫bean的自定義名稱空間以及用于實例化ElasticsearchServer的元素。使用repositories元素查找Spring Data存儲庫

示例、使用名稱空間設置Elasticsearch存儲庫

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd"><elasticsearch:repositories base-package="com.acme.repositories" /></beans> View Code

使用傳輸客戶端或節點客戶端元素在上下文中注冊Elasticsearch服務器的實例。

傳輸客戶端使用命名空間

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd"><elasticsearch:transport-client id="client" cluster-nodes="localhost:9300,someip:9300" /></beans> View Code

節點客戶端使用命名空間

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd"><elasticsearch:node-client id="client" local="true"" /></beans> View Code

2.1.2、基于注釋的配置

  Spring Data Elasticsearch存儲庫支持不僅可以通過XML命名空間激活,還可以通過JavaConfig使用注釋。

示例、使用JavaConfig激活Elasticsearch數據儲存庫

@Configuration @EnableElasticsearchRepositories(basePackages = "org/springframework/data/elasticsearch/repositories") static class Config {@Beanpublic ElasticsearchOperations elasticsearchTemplate() {return new ElasticsearchTemplate(nodeBuilder().local(true).node().client());} } View Code

上面的配置設置了ElasticsearchTemplate使用的嵌入式Elasticsearch服務器。Spring Data Elasticsearch Repositories使用@EnableElasticsearchRepositories注釋來激活,它本質上具有與XML名稱空間相同的屬性。如果沒有配置基礎軟件包,它將使用配置類所在的軟件包。

2.1.3、Elasticsearch使用CDI進行存儲

  Spring Data Elasticsearch存儲庫也可以使用CDI功能進行設置。

示例

class ElasticsearchTemplateProducer {@Produces@ApplicationScopedpublic ElasticsearchOperations createElasticsearchTemplate() {return new ElasticsearchTemplate(nodeBuilder().local(true).node().client());} }class ProductService {private ProductRepository repository;public Page<Product> findAvailableBookByName(String name, Pageable pageable) {return repository.findByAvailableTrueAndNameStartingWith(name, pageable);}@Injectpublic void setRepository(ProductRepository repository) {this.repository = repository;} } View Code

2.2、查詢方法

2.2.1、查詢策略

  Elasticsearch模塊支持所有基本的查詢構建功能,如String,Abstract,Criteria或從方法名派生。

聲明的查詢

  從方法名稱派生查詢并不總是足夠的和/或可能導致不可讀的方法名稱。在這種情況下,可以使用@Query注解(請參閱使用@Query注釋)。

2.2.2、query創建

示例

public interface BookRepository extends Repository<Book, String>{List<Book> findByNameAndPrice(String name, Integer price); }

上面的方法名稱將被轉換為以下Elasticsearch json查詢

{ "bool" :{ "must" :[{ "field" : {"name" : "?"} },{ "field" : {"price" : "?"} }]} }

下面顯示了Elasticsearch支持的關鍵字列表。

KeywordSampleElasticsearch Query String

And

findByNameAndPrice

{"bool" : {"must" : [ {"field" : {"name" : "?"}}, {"field" : {"price" : "?"}} ]}}

Or

findByNameOrPrice

{"bool" : {"should" : [ {"field" : {"name" : "?"}}, {"field" : {"price" : "?"}} ]}}

Is

findByName

{"bool" : {"must" : {"field" : {"name" : "?"}}}}

Not

findByNameNot

{"bool" : {"must_not" : {"field" : {"name" : "?"}}}}

Between

findByPriceBetween

{"bool" : {"must" : {"range" : {"price" : {"from" : ?,"to" : ?,"include_lower" : true,"include_upper" : true}}}}}

LessThanEqual

findByPriceLessThan

{"bool" : {"must" : {"range" : {"price" : {"from" : null,"to" : ?,"include_lower" : true,"include_upper" : true}}}}}

GreaterThanEqual

findByPriceGreaterThan

{"bool" : {"must" : {"range" : {"price" : {"from" : ?,"to" : null,"include_lower" : true,"include_upper" : true}}}}}

Before

findByPriceBefore

{"bool" : {"must" : {"range" : {"price" : {"from" : null,"to" : ?,"include_lower" : true,"include_upper" : true}}}}}

After

findByPriceAfter

{"bool" : {"must" : {"range" : {"price" : {"from" : ?,"to" : null,"include_lower" : true,"include_upper" : true}}}}}

Like

findByNameLike

{"bool" : {"must" : {"field" : {"name" : {"query" : "?*","analyze_wildcard" : true}}}}}

StartingWith

findByNameStartingWith

{"bool" : {"must" : {"field" : {"name" : {"query" : "?*","analyze_wildcard" : true}}}}}

EndingWith

findByNameEndingWith

{"bool" : {"must" : {"field" : {"name" : {"query" : "*?","analyze_wildcard" : true}}}}}

Contains/Containing

findByNameContaining

{"bool" : {"must" : {"field" : {"name" : {"query" : "?","analyze_wildcard" : true}}}}}

In

findByNameIn(Collection<String>names)

{"bool" : {"must" : {"bool" : {"should" : [ {"field" : {"name" : "?"}}, {"field" : {"name" : "?"}} ]}}}}

NotIn

findByNameNotIn(Collection<String>names)

{"bool" : {"must_not" : {"bool" : {"should" : {"field" : {"name" : "?"}}}}}}

Near

findByStoreNear

Not Supported Yet !

True

findByAvailableTrue

{"bool" : {"must" : {"field" : {"available" : true}}}}

False

findByAvailableFalse

{"bool" : {"must" : {"field" : {"available" : false}}}}

OrderBy

findByAvailableTrueOrderByNameDesc

{"sort" : [{ "name" : {"order" : "desc"} }],"bool" : {"must" : {"field" : {"available" : true}}}}

2.2.3、使用@Query注解

public interface BookRepository extends ElasticsearchRepository<Book, String> {@Query("{"bool" : {"must" : {"field" : {"name" : "?0"}}}}")Page<Book> findByName(String name,Pageable pageable); }

三、其他Elasticsearch操作支持

無法通過存儲庫接口直接訪問的Elasticsearch操作的額外支持。建議將這些操作添加為自定義實現,如Spring Data存儲庫的自定義實現中所述。

3.1、Filter Builder

private ElasticsearchTemplate elasticsearchTemplate;SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withFilter(boolFilter().must(termFilter("id", documentId))).build();Page<SampleEntity> sampleEntities =elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class); View Code

3.2、使用Scan And Scroll查看大結果集

Elasticsearch具有掃描和滾動功能,可以獲取大塊結果集。 ElasticsearchTemplate具有可用于以下的掃描和滾動方法。

SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices("test-index").withTypes("test-type").withPageable(new PageRequest(0,1)).build(); String scrollId = elasticsearchTemplate.scan(searchQuery,1000,false); List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>(); boolean hasRecords = true; while (hasRecords){Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L , new ResultsMapper<SampleEntity>(){@Overridepublic Page<SampleEntity> mapResults(SearchResponse response) {List<SampleEntity> chunk = new ArrayList<SampleEntity>();for(SearchHit searchHit : response.getHits()){if(response.getHits().getHits().length <= 0) {return null;}SampleEntity user = new SampleEntity();user.setId(searchHit.getId());user.setMessage((String)searchHit.getSource().get("message"));chunk.add(user);}return new PageImpl<SampleEntity>(chunk);}});if(page != null) {sampleEntities.addAll(page.getContent());hasRecords = page.hasNextPage();}else{hasRecords = false;}} } View Code

整體spring配置參看

?

總結

以上是生活随笔為你收集整理的006-spring-data-elasticsearch 3.0.0.0使用【四】-spring-data之Elasticsearch Repositories的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜伦鲁鲁 | 欧美精品一区二区蜜臀亚洲 | 亚洲涩涩网 | 国产femdom调教7777 | 美日韩在线观看 | 国产一级做a爰片在线看免费 | 亚洲精品国产免费 | 三级一区二区 | 成人观看视频 | 91日批视频 | 在线观看中文字幕亚洲 | 黄色av小说在线观看 | 肉色丝袜小早川怜子av | 国产精品无码免费在线观看 | www.黄色网址.com | 亚洲日本激情 | 亚洲乱码国产乱码精品精的特点 | av在线地址| 色a视频| 国产麻豆精品久久一二三 | 性欧美18一19内谢 | 91久久| 超碰碰碰碰 | 波多野结衣一区二区三区四区 | 一区小视频 | 亚洲国产高清在线 | 亚洲成人精品在线播放 | 一区二区三区日韩欧美 | 免费日韩欧美 | 国产永久精品 | 暖暖日本在线视频 | 农村妇女毛片精品久久久 | 九九久久免费视频 | 中文字幕精品视频在线 | 91观看视频 | 亚洲清纯国产 | 日韩国产三级 | 日韩视频在线一区 | 日本少妇裸体做爰高潮片 | 嫩模一区| 动漫av在线 | 每日在线更新av | 激情综合久久 | 日韩欧美国产高清 | 亚洲啪av永久无码精品放毛片 | 日本在线三级 | 国产精品白嫩极品美女视频 | 久久刺激 | 中文亚洲av片不卡在线观看 | 人人澡人人爽 | 日本高清视频网站 | h片在线免费观看 | 国产精品麻豆果冻传媒在线播放 | 撸撸在线视频 | av片网址| 青青草免费在线观看 | 新婚夫妇白天啪啪自拍 | 一级性视频 | 成人免费毛片入口 | 俄罗斯精品一区二区三区 | 韩国一级片在线观看 | 国产专区av | 天天摸天天爽 | 成人激情视频在线 | 午夜一二三 | 一级特黄aa | 日韩欧美视频免费在线观看 | 爱草av| 永久免费视频网站 | 免费爱爱网址 | 婷婷成人av| 欧美黑人一区二区三区 | 在线播放黄色av | 性一交一乱一透一a级 | 亚洲综合精品国产一区二区三区 | 国内精品999 | 国产精品天美传媒入口 | 久久中文娱乐网 | 国产无套丰满白嫩对白 | 在线天堂在线 | 久久最新网址 | 欧美群交射精内射颜射潮喷 | 中文乱码人妻一区二区三区视频 | 欧美日韩四区 | 中文一区二区在线观看 | 精品视频在线免费 | 麻豆成人精品 | 日本丰满熟妇hd | 在线视频观看一区二区 | 少妇4p| 久久91av| 黄页网站视频在线观看 | 揄拍自拍 | 亚洲欧美综合视频 | 国产人妻一区二区三区四区五区六 | 亚洲经典在线观看 | 天天综合网在线观看 | 免费人成又黄又爽又色 | 快射视频在线观看 |