<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ES開發(fā)指南|如何快速上手ElasticSearch

          共 3702字,需瀏覽 8分鐘

           ·

          2021-02-09 00:48

          Python實戰(zhàn)社群

          Java實戰(zhàn)社群

          長按識別下方二維碼,按需求添加

          掃碼關(guān)注添加客服

          進Python社群▲

          掃碼關(guān)注添加客服

          進Java社群


          作者丨淺羽Eric

          來源丨淺羽的IT小屋

          1、全文檢索

          「Lucence的簡單入門:」

          • 在此之前我們先談?wù)凩ucence,它是apache軟件基金會發(fā)布的一個開放源代碼的全文檢索引擎工具包,由資深全文檢索專家Doug Cutting所撰寫,它是一個全文檢索引擎的架構(gòu),提供了完整的創(chuàng)建索引和查詢索引,以及部分文本分析的引擎。
          • Lucence的目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎,Lucence在全文檢索領(lǐng)域是一個經(jīng)典的祖先,現(xiàn)在很多檢索引擎都在其基礎(chǔ)上創(chuàng)建的,思想是相通的。
          • Lucence是根據(jù)關(guān)鍵字來搜索的文本搜索工具,只能在某個網(wǎng)站內(nèi)容搜索文本內(nèi)容,不能跨網(wǎng)站搜索。
          • 想進一步了解Lucence的可以下面博客查閱
          https://www.cnblogs.com/ysdrzp/p/10009660.html

          2、ElasticSearch是什么?

          「倒排索引原理:」

          • 倒排索引是目前搜索引擎公司對搜索引擎最常用的存儲方式,也是搜索引擎的核心內(nèi)容,在搜索引擎的實際應(yīng)用中,有時需要按照關(guān)鍵字的某些值查找記錄,所以是按照關(guān)鍵字建立索引,這個索引就是倒排索引

          「ElasticSearch概念:」

          • ElasticSearch是一個基于Lucence的全文搜索服務(wù)器,java語言編寫,提供了分布式的搜索引擎,安裝方便,使用簡單

          3、ElasticSearch能干什么?

          「主要用途:」

          • 分布式下首頁搜索,如百度,淘寶,京東...
          • 基于索引數(shù)據(jù)存儲


          4、Elastic有哪些產(chǎn)品

          「主要產(chǎn)品:」

          • E(ElasticSearch)
          • L(logstash)
          • K(Kibana)
          • B(Beats)


          5、ElasticSearch的安裝以及使用

          「安裝ElasticSearch:」

          Elasticsearch官網(wǎng):https://www.elastic.co/cn/products/elasticsearch
          下載地址:https://www.elastic.co/downloads/past-releases
          安裝Elasticsearch前提條件:JDK1.8及以上

          「安裝:」

          • ElasticSearch無需安裝,解壓即用

          「運行:」

          進入elasticsearch/bin目錄,雙擊可執(zhí)行文件elasticsearch.bat
          可以看到綁定了兩個端口:
          9300:Java程序訪問的端口
          9200:瀏覽器、postman訪問的端口
          我們在瀏覽器中訪問:http://127.0.0.1:9200,出現(xiàn)json數(shù)據(jù)字符串,說明安裝成功。


          6、安裝Head插件

          「什么是Head:」

          • ElasticSearch只是后端提供各種API,那么怎么直觀的使用它呢?ElasticSearch-head將是一款專門針對ElasticSearch的客戶端工具
          • ElasticSearch-head配置包,下載地址:https://github.com/mobz/elasticsearch-head

          「安裝Head:」
          注意:es5以上版本安裝head需要安裝node和grunt
          第一步:從地址:https://nodejs.org/en/download/?下載相應(yīng)系統(tǒng)的msi,雙擊安裝。
          第二步:安裝完成用cmd進入安裝目錄執(zhí)行 node -v可查看版本號
          ???????????????能看到版本號說明node安裝成功
          第三步:執(zhí)行 npm install -g grunt-cli 安裝grunt ,安裝完成后執(zhí)行g(shù)runt ??- version查看是否安裝成功,會顯示安裝的版本號?


          「配置運行:」
          第一步:進入Elasticsearch安裝目錄下的config目錄,修改elasticsearch.yml文件.在文件的末尾加入以下代碼
          http.cors.enabled:?true?
          http.cors.allow-origin:?"*"
          node.master:?true
          node.data:?true
          然后去掉
          network.host:?192.168.0.1的注釋并改為network.host:?0.0.0.0
          去掉cluster.name;node.name;http.port的注釋(也就是去掉#)

          第二步:雙擊elasticsearch.bat重啟Elasticsearch

          第三步:在https://github.com/mobz/elasticsearch-head中下載head插件,選擇下載zip

          第四步:解壓到指定文件夾下,D:\environment\elasticsearch-head-master 進入該文件夾,修改D:\environment\elasticsearch-head-master\Gruntfile.js 在對應(yīng)的位置加上hostname:’*’。
          connect:?{
          ???server:?{
          ????options:?{
          ?????hostname:'*',
          ?????port:?9100,
          ?????base:?'.',
          ?????keepalive:?true
          ????}
          ???}
          ??}

          第五步:
          打開cmd命令行窗口?,在D:\environment\elasticsearch-head-master?下執(zhí)行npm?install?安裝
          完成后執(zhí)行g(shù)runt server 或者npm run start 運行head插件,如果運行不成功建議重新安裝grunt。


          「安裝完成:」


          • 打開瀏覽器訪問:http://127.0.0.1:9100

          「安裝lk分詞器:」


          • ik分詞器ip:http://www.oschina.net/news/2660
          • ElasticSearch默認采用的分詞器,是單個字分詞,效果很差,所以我們需要安裝一個更實用的分詞器,這里采用IK分詞器

          下載
          注意:你的Elasticsearch和IK分詞器必須版本統(tǒng)一
          源碼下載地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/6.2.x

          jar包下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

          安裝
          無需安裝,解壓即可使用
          我們將其改名為ik,并復(fù)制到Elasticsearch的解壓目錄下的plugins下面

          重啟elasticSearch即可



          7、SpringBoot整合ElasticSearch

          「構(gòu)建SpringBoot工程,并導入依賴:」


          ????org.springframework.boot
          ????spring-boot-starter-data-elasticsearch

          「編寫實體類,對應(yīng)ElasticSearch中的document:」

          //?表示此類對應(yīng)es中的一條數(shù)據(jù)
          type:相當于mysql中的表
          indexName:相當于mysql中的數(shù)據(jù)庫
          @Document(type?=?"docs",indexName?=?"yx")?
          public?class?User?implements?Serializable?{
          ????@Id?????//主鍵映射
          ????private?int?userId;
          ????@Field(type?=?FieldType.Text)???//成員映射,type:表示數(shù)據(jù)類型
          ????private?String?userName;
          ????@Field
          ????private?double?price;

          「測試(前提ElasticSearch客戶端以及服務(wù)器全部安裝完備):」

          1、測試類中對應(yīng)操作es的對象是ElasticsearchTemplate
          ??????使用詳見https://blog.csdn.net/chen_2890/article/details/83895646
          2、工程化測試
          2.1新建service以及serviceimpl
          2.3聲明接口extends???ElasticsearchRepository,第一個參數(shù)表示實體類(document),第二個參數(shù)表示實體對象主鍵的包裝類
          2.4新建controll
          2.5啟動服務(wù)器訪問地址

          「ElasticSearch常見方法使用:」

          //根據(jù)價格區(qū)間查詢
          ????@Test
          ????public?void?queryByPrice(){

          //???????List?users?=?userRepository.findByPriceBetween(12.3,13);
          //????????for?(int?i?=?0;?i?
          //????????????System.out.println(users.get(i));
          //????????}
          ????????//查詢12.3之前的
          //????????List?users?=?userRepository.findByPriceBefore(12.3);
          //????????System.out.println(users);
          ????????List?users?=?userService.findByPriceBetween(12.3,0);
          ????????for?(User?u?:users)?{
          ????????????System.out.println(u);
          ????????}
          ????}

          ????//自定義查詢之分頁查詢
          ????@Test
          ????public?void?queryByPages(){
          ????????//創(chuàng)建構(gòu)建器
          ????????NativeSearchQueryBuilder?queryBuilder?=?new?NativeSearchQueryBuilder();

          ????????//添加基本分詞查詢,fuzzyQuery模糊查詢
          ????????queryBuilder.withQuery(QueryBuilders.fuzzyQuery("userName",?"羽"));

          ????????//?分頁:
          ????????int?page?=?1;
          ????????int?size?=?2;
          ????????queryBuilder.withPageable(PageRequest.of(page,size));

          ????????Page?users?=?userRepository.search(queryBuilder.build());
          ????????System.out.println("總條數(shù)是:"+users.getTotalElements());
          ????????System.out.println("總頁數(shù)是:"+users.getTotalPages());
          ????????System.out.println("當前頁是:"+users.getNumber());
          ????????System.out.println("每一頁的數(shù)量是"+users.getSize());

          ????????for?(User?user:users)?{
          ????????????System.out.println(user);
          ????????}
          ????}

          ????//查詢排序
          ????@Test
          ????public?void?searchAndSort(){
          ????????//構(gòu)建查詢
          ????????NativeSearchQueryBuilder?queryBuilder?=?new?NativeSearchQueryBuilder();
          ????????//模糊查詢
          ????????queryBuilder.withQuery(QueryBuilders.fuzzyQuery("userName",?"羽"));
          ????????//構(gòu)建排序
          ????????queryBuilder.withSort(SortBuilders.fieldSort("price").order(SortOrder.DESC));
          ????????Page?users?=?userRepository.search(queryBuilder.build());
          ????????for?(User?user:users)?{
          ????????????System.out.println(user);
          ????????}
          ????}


          結(jié)語


          本篇關(guān)于ElasticSearch的介紹就先到這里結(jié)束了,后續(xù)會出更多關(guān)于ElasticSearch系列更多文章,謝謝大家支持!

          程序員專欄
          ?掃碼關(guān)注填加客服?
          長按識別下方二維碼進群

          近期精彩內(nèi)容推薦:??

          ?幾句話,離職了

          ?中國男性的私密數(shù)據(jù)大賞,女生勿入!

          ?為什么很多人用“ji32k7au4a83”作密碼?

          ?一個月薪 12000 的北京程序員的真實生活 !




          在看點這里好文分享給更多人↓↓

          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  理论片在线午夜视频 | 伊人色色大香蕉 | 亚洲色影院| 爱爱综合日韩 | 欧美一级 片内射欧美AA99 |