日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 99久久精品免费 | 日韩视频在线观看一区 | 青青草伊人 | 日韩黄色一级大片 | 日本人妖xxxx | 日韩在线第三页 | 免费欧美视频 | 免费h片在线观看 | 亚洲天堂爱爱 | 免费在线观看的av | 精品人妻少妇嫩草av无码 | 亚洲精品在线网站 | 久久久久无码国产精品一区李宗瑞 | 成年丰满熟妇午夜免费视频 | 亚洲天堂av电影 | 久久高清免费 | 精品国产乱码久久久久久蜜柚 | www.在线看 | www.超碰在线观看 | 免费高清毛片 | 欧美在线二区 | 日本在线三级 | 少妇又色又紧又大爽又刺激 | 亚洲不卡在线 | 一久久| 午夜视频一区二区三区 | 亚洲男人天堂2023 | 二区三区av | 性欧美成人播放77777 | 在线a网站 | 黄色一级片免费看 | 国产精品4区 | 日韩三级视频在线播放 | 国产伦精品一区二区三区四区 | 日韩一卡二卡三卡 | av在线不卡观看 | 内地级a艳片高清免费播放 91在线精品一区二区 | 亚洲三级理论 | 国产精品jizz | 欧美精品电影一区二区 | 亚洲视频国产精品 | 黄色一级国产 | 99久久久无码国产精品性色戒 | 亚洲精品少妇久久久久久 | 无码成人精品区一级毛片 | 99久久久无码国产精品免费麻豆 | 四虎8848精品成人免费网站 | 性大毛片视频 | 秋霞av在线| 日韩免费视频一区二区视频在线观看 | 久草新视频 | 四虎影院在线免费播放 | 免费看片成人 | 噜噜噜在线| 欧美一区久久 | 日本午夜一级 | 亚洲热在线视频 | 直接看的毛片 | 欧美日韩中文字幕一区 | 午夜香蕉 | 久操国产 | 天天综合在线观看 | 天堂在线中文字幕 | 永久视频在线 | 日韩精品成人一区二区在线 | 精品国产九九九 | 黄色a级在线观看 | 丝袜人妻一区二区 | missav | 免费高清av在线看 | 韩国中文字幕hd久久精品 | 亚洲国产91 | 亚洲视频免费 | 奇米在线播放 | 国产精品一区二区久久毛片 | 美国爱爱视频 | 青青草婷婷 | 国产自产在线视频 | 99精品在线免费观看 | 国产黄网在线观看 | 成人福利网| 久久久999成人 | 欧美日韩久久久 | 丰满人妻一区二区三区46 | 亚洲黄色在线观看 | 国模在线观看 | 91美女在线| 色吧婷婷 | 成人a√ | 精品一区二区三区国产 | 一个人在线观看免费视频www | 成人免费大片黄在线播放 | 欧美巨乳在线观看 | 日韩视频h | 女人18毛片毛片毛片毛片区二 | 福利视频一二区 | 日本黄a三级三级三级 | 国产亚洲欧美一区 | 九色丨蝌蚪丨成人 | 国产av无码专区亚洲av毛片搜 |