javascript
SpringBoot日记——ElasticSearch全文检索
看到標題的那一串英文,對于新手來說一定比較陌生,而說起檢索,應該都知道吧。
這個ElasticSearch目前我們的首選,他主要有可以提供快速的存儲、搜索、分析海量數據的作用。他是一個分布式搜索服務,提供了Restful API,底層基于Lucene(一個開源的搜索引擎工具包),使用shard的分片方式保證數據安全,且有自動resharding功能。我們知道的github、維基百科等這類網站,都是采用這個服務的。
elasticsearch的安裝
這里在使用前還要說明一點,很重要的:elasticsearch默認占用2G的堆內存空間,一般直接啟用的話,一定會報錯,所以我們還要做相應的處理才可以。
1)、首先是使用docker拉取該容器
docker pull elasticsearch// 若拉取較慢,可以使用國內的docker加速
docker pull registry.docker-cn.com/library/elasticsearch
2)、啟動鏡像(限制內存占用的啟動,9200是該引擎常用端口,9300是作為分布式使用時,各個節點的通信端口)
docker run -e ES_JAVA_OPTS="-Xms256m -Xms256m" -d -p 9200:9200 -p 9300:9300 --name ES_01 73e6fdf8bd4f3)、檢查一下,是否啟動成功了,瀏覽器中鍵入 你服務器的ip:9200,打開以后是這樣的,表示成功了~:(不要在意這個炫酷的json格式,是瀏覽器插件~)
elasticsearch的測試
1)、首先我們來看下官方文檔(放心,中文的!):https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
這里有最簡單實用的安裝和使用方法。我們先打開一個簡單的示例,試一下:
按照這份文檔,我們使用postman或jmeter等接口的工具來測試一下吧:
按照文檔,我們使用put參數,地址格式: 服務器ip:9200/索引名稱/類型名稱/文件id? 。可見創建成功了,返回了true。
將 HTTP 命令由?PUT?改為?GET?可以用來檢索文檔,同樣的,可以使用?DELETE?命令來刪除文檔,以及使用?HEAD?指令來檢查文檔是否存在。如果想更新已存在的文檔,只需再次?PUT?。
整合到springboot中
好的,我們看看如何把這個整合到springboot中吧。(另外注意下:我們的springboot的版本盡量在2.0+,這樣你安裝的elasticsearch的版本才能匹配到,不然運行的時候會有鏈接報錯)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>SpringBoot默認支持兩種技術與ES進行交互:Jest和SpringData ElasticSearch,而默認Jest是不生效的,想要使用,就要自己加載jest的jar包了。本文不做相關介紹,后邊有需求,我可以單獨補一篇文章。這里主要來說一下SpringData ElasticSearch的使用。
1)、首先我們啟動主程序之前要添加一下的配置參數,然后直接啟動主程序,看看是否可以正常運行。
spring.data.elasticsearch.cluster-name=elasticsearch #這里在瀏覽器中輸入 服務器id:9200 就可以看到這個name是什么了 spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300 #這里寫的是 服務器id:9300我們看到啟動正常,并且add添加了這個9300的端口啟動信息。
2)、接下來我們按照官網文檔的兩種寫法,進行測試:
1.編寫一個ElasticSearchRepository(有需要增刪改查的后邊自己補吧),一個需要用到的Book(注意注解的使用)。
import org.springframework.data.elasticsearch.annotations.Document;@Document(indexName = "oooodin", type = "book") public class Book {private Integer id;private String bookName;private String author;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}@Overridepublic String toString() {return "Book{" +"id=" + id +", bookName='" + bookName + '\'' +", author='" + author + '\'' +'}';} } import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;public interface BookRepository extends ElasticsearchRepository<Book, Integer> { }然后來測試一下看看(創建一個測試類):
@RunWith(SpringRunner.class) @SpringBootTest public class RedisTest {@AutowiredBookRepository bookRepository;@Testpublic void test01() {Book book = new Book();book.setId(1);book.setBookName("晉升");book.setAuthor("ice");bookRepository.index(book);}}然后我們通過瀏覽器訪問一下:
服務器ip:9300 就可以訪問看到我們添加的內容了。
?
轉載于:https://www.cnblogs.com/iceb/p/9517659.html
總結
以上是生活随笔為你收集整理的SpringBoot日记——ElasticSearch全文检索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初探运算符重载------(减号)
- 下一篇: 函数名的应用(第一对象) 闭包 装饰器