成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot整合ElasticSearch詳解及相關(guān)使用方法

開發(fā) 前端
繼承ElasticsearchRepository后 我們也可以像data-jpa一樣使用findBy*等語法來寫相關(guān)查詢方法。

環(huán)境:springboot2.3.10.RELEASE + ElasticSearch7.8.0

相關(guān)依賴及應(yīng)用配置

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>
spring:
  elasticsearch:
    rest:
      uris:
      - http://localhost:9201
---
logging:
  level:
    com.pack: debug
    org.springframework.data.elasticsearch.core: debug

數(shù)據(jù)模型建立

@Document(createIndex = true, indexName = "products", shards = 3, replicas = 1)
public class Product {


  @Id
  private Long id ;
  @Field(analyzer = "ik_max_word", type = FieldType.Text)
  private String title ;
  @Field(type= FieldType.Keyword)
  private String category ;
  @Field(type = FieldType.Double)
  private Double price ;
  @Field(type = FieldType.Keyword, index = false)
  private String images ;
  @Override
  public String toString() {
    return "Product [id=" + id + ", title=" + title + ", category=" + category + ", price=" + price + ", images="
      + images + "]";
  }


}

ProductRepository

這里我們只需要繼承ElasticsearchRepository即可,是不是和data-jpa一樣一樣的的。

public interface ProductRepository extends ElasticsearchRepository<Product, Long> {
}

繼承ElasticsearchRepository后 我們也可以像data-jpa一樣使用findBy*等語法來寫相關(guān)查詢方法。

  • 方法名中支持的關(guān)鍵字

圖片圖片


  • 方法返回值類型
  1. List<T>
  2. Stream<T>
  3. SearchHits<T>
  4. List<SearchHit<T>>
  5. Stream<SearchHit<T>>
  6. SearchPage<T>

Repository中也支持@Query注解的方式自定義查詢字符串。

public interface ProductRepository extends ElasticsearchRepository<Product, Long> {
  
  List<Product> findByTitle(String title) ;
  
  @Query("{\"fuzzy\": {\"title\": \"?0\"}}")
  Page<Product> findByTitle(String sex,Pageable pageable);
  // 自定義查詢
  @Query("{\"match\": {\"category\": \"?0\"}}")
  Page<Product> findByCategory(String category,Pageable pageable);
  
  // 高亮設(shè)置
  @Highlight(fields = {@HighlightField(name = "title"), @HighlightField(name = "category")})
  List<SearchHit<Product>> findByTitleOrCategory(String title, String category,Pageable pageable) ;
}

除了使用Repository方式,我們還可以使用ElasticsearchRestTemplate的方式請(qǐng)求服務(wù)。如下測(cè)試

測(cè)試

@Resource
private ProductRepository productRepository ;
@Resource
private ElasticsearchRestTemplate elasticTemplate ;
  
@Test
public void testCreate() {
  Product product = new Product() ;
  product.setId(3L) ;
  product.setCategory("配件") ;
  product.setPrice(299.5d) ;
  product.setImages("http://www.pack.com/memory.jpg") ;
  product.setTitle("很牛逼的內(nèi)存條") ;
  productRepository.save(product) ;
}
  
@Test
public void testQuery() {
  Product product = productRepository.findById(1L).orElse(null) ;
  System.out.println(product) ;
}
  
@Test
public void testFindAll() {
  Pageable pageable = PageRequest.of(1, 2) ;
  Page<Product> page = productRepository.findAll(pageable) ;
  System.out.println(page.getTotalPages() + "\n" + page.getContent()) ;
}
  
@Test
public void testTermSearch() {
  for (Product p : productRepository.findByTitle("Java從入門到精通")) {
    System.out.println(p) ;
  }
}
  
@Test
public void testFindByTitle() {
  Pageable pageable = PageRequest.of(0, 2) ;
  Page<Product> page = productRepository.findByTitle("Java", pageable) ;
  System.out.println(page.getTotalPages() + "\n" + page.getContent()) ;
}
  
@Test
public void testFindByCategory() {
  Pageable pageable = PageRequest.of(0, 2) ;
  Page<Product> page = productRepository.findByCategory("書籍", pageable) ;
  System.out.println(page.getTotalPages() + "\n" + page.getContent()) ;
}
  
@Test
public void testCriteriaQuery() {
  Criteria criteria = new Criteria("price").greaterThan(50).lessThan(80);
  Query query = new CriteriaQuery(criteria);
  SearchHits<Product> hits = elasticTemplate.search(query, Product.class, IndexCoordinates.of("products")) ;
  for (SearchHit<Product> hit : hits) {
    System.out.println(hit) ;
  }
}
  
@Test
public void testStringQuery() {
  Query query = new StringQuery("{ \"match\": { \"category\": { \"query\": \"配件\" } } } ");
  SearchHits<Product> hits = elasticTemplate.search(query, Product.class);
  for (SearchHit<Product> hit : hits) {
    System.out.println(hit) ;
  }
}


@Test
public void testStringQueryFuzzy() {
  Query query = new StringQuery("{ \"fuzzy\":{\"title\":{\"value\":\"Java\"}} }");
  HighlightQuery highlightQuery = null ;
  HighlightBuilder highBuilder = new HighlightBuilder().preTags("<font color='red'>").postTags("</font>").field("title") ;
  highlightQuery = new HighlightQuery(highBuilder) ;
  query.setHighlightQuery(highlightQuery) ;
  SearchHits<Product> hits = elasticTemplate.search(query, Product.class);
  for (SearchHit<Product> hit : hits) {
    System.out.println(hit + "\n" + hit.getHighlightField("title")) ;
  }
}

在啟動(dòng)服務(wù)時(shí)會(huì)自動(dòng)地為我們創(chuàng)建索引。

我們可以安裝Chrome插件 ElasticSearch Head非常方便地查看es的狀態(tài)及索引信息。

圖片圖片


這里我是搭建的集群。

圖片圖片

責(zé)任編輯:武曉燕 來源: 實(shí)戰(zhàn)案例錦集
相關(guān)推薦

2023-11-10 08:17:01

分布式搜索引擎

2023-05-11 08:00:44

Golangsync.Pool

2009-12-28 13:28:03

WPF視頻

2017-08-18 14:01:44

大數(shù)據(jù)dataWrangle

2023-06-28 08:34:02

Bind()函數(shù)JavaScript

2010-06-01 19:55:30

SVN使用

2010-06-03 17:38:03

Hadoop命令

2010-10-09 10:30:03

JS event

2009-12-02 16:04:44

PHP fsockop

2010-01-28 17:07:03

Android Gal

2009-08-04 08:32:06

Linux Find命Linux Find使用方法

2011-09-06 09:26:03

2023-08-09 08:01:00

WebSockett服務(wù)器web

2023-01-06 08:55:00

2009-08-25 16:54:28

C# RichText

2012-05-11 10:13:54

2010-05-31 11:30:57

SVN使用

2010-01-25 14:10:21

C++堆棧

2009-11-30 17:43:54

PHP split()

2010-11-19 09:56:38

SQLiteAndroid
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩激情网 | 欧美在线视频一区二区 | 国产一级淫片a直接免费看 免费a网站 | 免费日韩网站 | 午夜成人免费视频 | 欧美日韩精品专区 | 97精品视频在线 | 一区日韩 | 一级毛片在线播放 | 国产日产精品一区二区三区四区 | 911网站大全在线观看 | 男人天堂999| 综合久久99| 天堂国产| 精精国产xxxx视频在线播放 | 午夜国产一级片 | 国产ts人妖另类 | 亚洲永久 | 日韩精品在线看 | 国产精品九九视频 | 国产高清视频在线观看播放 | 久久这里只有精品首页 | 亚洲国产成人av好男人在线观看 | 亚洲不卡一 | 91福利在线观看 | 做a的各种视频 | 99热这里有精品 | 在线黄色影院 | 欧美激情五月 | 免费看淫片 | 99精品99 | 色眯眯视频在线观看 | 97国产一区二区精品久久呦 | 久草在线 | 日本粉嫩一区二区三区视频 | 隔壁老王国产在线精品 | 夜操| 亚洲欧美日韩成人在线 | 久久亚洲经典 | 国产精品久久久久久久久污网站 | 国内精品视频免费观看 |