国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ES完整使用從安裝到springboot項(xiàng)目操作

這篇具有很好參考價(jià)值的文章主要介紹了ES完整使用從安裝到springboot項(xiàng)目操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

ES

1. ES的原理和基本概念

ES一般使用保存日志數(shù)據(jù),對(duì)數(shù)據(jù)做日志做一些管理,ElasticSearch(resful風(fēng)格)數(shù)據(jù)只有json類型的,

ElastricSearch和Solr都是基于Lucene的全文搜索引擎服務(wù)器
Lucene:
apache的子項(xiàng)目開(kāi)源的全文搜索引擎工具包
倒排索引:
通過(guò)term或者說(shuō)某個(gè)詞記錄其所在的文檔的地址,來(lái)查找文檔中的內(nèi)容
Lucence的內(nèi)部結(jié)構(gòu)
索引:一個(gè)索引對(duì)應(yīng)一個(gè)文件夾,文件夾里的分件構(gòu)成一個(gè)Luence索引
段:一個(gè)索引可以包含多個(gè)段 段相互獨(dú)立也可以合并,添加文檔(doc)也會(huì)添加段
文檔:文檔是Lucence最小的單位,不同的文檔存在不同的段中,每個(gè)段可以存多個(gè)文檔
域(字段):一篇文檔中有多個(gè)字段,可以存在不同的域中
詞:是索引最小的單位,經(jīng)過(guò)詞法分析或者語(yǔ)言處理后的字符串

? 索引(index) -----> 數(shù)據(jù)庫(kù)
? 類型(type)-----> 表
? 文檔(doc)-----> 行
? 字段(fields)-----> 列
? term (項(xiàng)) -----> 里面的某個(gè)字符

分詞:ik分詞器
對(duì)于一些沒(méi)有意義的詞不建立索引,不使用,不與doc文檔地址鏈接
keyword 不進(jìn)行分詞不做拆分,直接根據(jù)字符串的內(nèi)容建立反向索引
text 進(jìn)行分詞 根據(jù)分詞建立反向索引
Elasticsearch分布式
分布式節(jié)點(diǎn)是對(duì)等,選出一個(gè)Master然后Master負(fù)責(zé)進(jìn)行寫入和更新操作,而且Elasticsearch會(huì)對(duì)數(shù)據(jù)進(jìn)行切分,同每個(gè)分片也會(huì)保存多個(gè)副本保證高可可用
只有建立索引和類型需要經(jīng)過(guò)master
數(shù)據(jù)的寫入有一簡(jiǎn)單的路由規(guī)則,可以route到集群的任意節(jié)點(diǎn),所以數(shù)據(jù)寫入壓力是分散在整個(gè)集群中的
可以做搜索和日志分析加上kibana

2. ES和Kibana的下載與安裝

  1. ES下載地址

  2. Kibana下載地址

  3. ES和Kibanna的對(duì)照表

  4. es安裝步驟 (es安裝真的坑)

    # 1. 修改es 內(nèi)存配置,不然啟動(dòng)不起來(lái)
    vim /nikaboy/elasticsearch-8.2.2/config/jvm.options
     -Xms512m
     -Xmx512m
      
    # 2. 創(chuàng)建一個(gè)普通用戶,es無(wú)法在root用戶進(jìn)行操作
    useradd es
    passwd es
    chown -R es /nikaboy/elasticsearch-8.2.2 # 配置es用戶對(duì)文件目錄的權(quán)限
    
    # 3. 編輯 /etc/security/limits.conf
    	es soft nofile 65536
    es hard nofile 65536
    	es soft nproc 4096
    	es hard nproc 4096
    # 4. 編輯 /etc/security/limits.d/20-nproc.conf,將* 改為用戶名(es)
    es          soft    nproc     4096
    root       soft    nproc     unlimited
    
    # 5. vi 編輯 /etc/sysctl.conf
    vm.max_map_count = 655360
    
    # 6.配置application.yml
    
    # 7. su es 切換到es用戶
     nohup ./bin/elasticsearch > msg.log 2>&1 &   # 后臺(tái)啟動(dòng)es
    # 8. 訪問(wèn)
    http://192.168.10.10:9200/
    
    

    es的application.yml文件

     cluster.name: my-application #集群名稱
     node.name: node-1 #節(jié)點(diǎn)名稱
     #數(shù)據(jù)和日志的存儲(chǔ)目錄
     path.data: /nikaboy/elasticsearch-8.2.2/db/data
     path.logs: /nikaboy/elasticsearch-8.2.2/db/logs
     #設(shè)置綁定的ip,設(shè)置為0.0.0.0以后就可以讓任何計(jì)算機(jī)節(jié)點(diǎn)訪問(wèn)到了
     network.host: 0.0.0.0
     http.port: 9200 #端口
     #設(shè)置在集群中的所有節(jié)點(diǎn)名稱,這個(gè)節(jié)點(diǎn)名稱就是之前所修改的,當(dāng)然你也可以采用默認(rèn)的也行,目前是單機(jī),放入一個(gè)節(jié)點(diǎn)即可
     cluster.initial_master_nodes: ["node-1"]
     
     #----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------
     #
     # The following settings, TLS certificates, and keys have been automatically
     # generated to configure Elasticsearch security features on 08-11-2022 13:02:52
     #
     # --------------------------------------------------------------------------------
     
     # Enable security features
     xpack.security.enabled: false # 關(guān)閉ssl認(rèn)證
     
     xpack.security.enrollment.enabled: true
     
     # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
     xpack.security.http.ssl:
     enabled: false # 關(guān)閉ssl認(rèn)證
     keystore.path: certs/http.p12
     
     # Enable encryption and mutual authentication between cluster nodes
     xpack.security.transport.ssl:
     enabled: true
     verification_mode: certificate
     keystore.path: certs/transport.p12
     truststore.path: certs/transport.p12
     #----------------------- END SECURITY AUTO CONFIGURATION -------------------------
    
    
    1. 安裝Kibanna(可視化監(jiān)控es)

      • 配置kibanna的yml文件 (cd /nikaboy/kibana-8.2.2/config)

        server.port: 5601
        
        server.host: "0.0.0.0"
        
        server.name: "kibana"
        
        elasticsearch.hosts: ["http://127.0.0.1:9200/"]
        
        i18n.locale: "zh-CN"
        
      • 切換普通用戶啟動(dòng) 訪問(wèn)

         nohup ./bin/kibana >msg.log 2>&1 &
         #訪問(wèn)地址 http://192.168.10.10:5601/ 
        

3.ES使用

  1. kibaba的使用

es springboot 配置,es,筆記,精品,elasticsearch,spring boot

es springboot 配置,es,筆記,精品,elasticsearch,spring boot

  1. 索引增刪改查

    # 創(chuàng)建一個(gè)索引
    PUT /nikaboy
    {
         
      "settings": {
         
        "number_of_shards": 5,  ## 分片數(shù)量 默認(rèn)為1
        "number_of_replicas": 1   ## 備份數(shù)量 默認(rèn)為1
      }
    }
    
    # 查看索引
    GET /nikaboy
    
    # 刪除索引
    DELETE /nikaboy
    
  2. ES中Field可以指定的類型

字符串String:
text:一般用于全文檢索。將當(dāng)前的field進(jìn)行分詞
keyword: 當(dāng)前的Field不可被分詞
數(shù)值類型Numeric:
long,
integer,
short,
byte,
double,
float,
half_float,
scaled_float
時(shí)間類型Data:
date,可以指定具體的格式
布爾類型Boolean:
boolean
二進(jìn)制類型Binary:
binary
范圍類型Range:
integer_range, float_range, long_range, double_range, date_range
經(jīng)緯度類型:
geo_point:用來(lái)存儲(chǔ)經(jīng)緯度
ip類型:
ip:可以存儲(chǔ)ipv4或者ipv6

  1. 增刪改數(shù)據(jù)

    • 創(chuàng)建包含數(shù)據(jù)結(jié)構(gòu)的索引

      PUT /student 
      {
             
       "settings": {
             
          "number_of_shards": 5,  
          "number_of_replicas": 1  
        },
        "mappings": {
             
              "properties":{
             
                "name":{
             
                  "type":"text"
                },
                "age":{
             
                  "type":"integer"
                },
                "sex":{
             
                  "type":"byte"
                },
                "native":{
             
                  "type":"keyword"
                },
                "birthDate":{
             
                  "type":"date"
                },
                "sno":{
             
                  "type":"keyword"
                }
              }
          }
      }
      

可能會(huì)遇到問(wèn)題:Failed to parse mapping: Root mapping definition has unsupported parameters…在7.+版本,已經(jīng)不支持索引創(chuàng)建type,默認(rèn)類型是_doc

  • 給類型字段增刪改

    ## 給student 增加 class_name 字段
    PUT /student/_mapping
    {
         
      "properties":{
         
        "class_name":{
         
          "type":"text"
        }
      }
    }
    
    ##  增加某個(gè)學(xué)生的某個(gè)字段
    POST /student/_update/12345678
    {
         
      "script": {
         
        "source": "ctx._source.price=34"
      } 
    }
    
    
    ## 刪除某個(gè)學(xué)生的某個(gè)字段
    POST /student/_update/12345678
    {
         
       "script": {
         
        "source":"ctx._source.remove(\"price\")"
      }
    }
    
  1. 增加數(shù)據(jù)

    ## 增加數(shù)據(jù)
    
    POST  /student/_doc
    {
         
      "name": "小王",
      "sex": 1,
      "birthDate" : "2020-11-11",
      "class_name" : "計(jì)算機(jī)科學(xué)一班",
      "native": "廣州天河區(qū)",
      "sno": "12345678",
      "age": "2"
    }
    ## 查看數(shù)據(jù) 
    
    POST /student/_search
    {
         
      "query": {
         
        "match_all": {
         }
      }
    }
    
    ## 根據(jù)id刪除某條數(shù)據(jù)
    
    DELETE /student/_doc/cW-LZ4QBLCdlaqLEGlVK
    
    ## 根據(jù)id修改某個(gè)字段的數(shù)據(jù)
    POST /student/_update/cG-KZ4QBLCdlaqLE6lUF
    {
         
      "doc": {
         
        "name":"小雅"
      }
    }
    
    
    ## script 腳本方式 更新數(shù)據(jù) 將id為12345678的學(xué)生班級(jí)名修改為二班 
    POST /student/_update/12345678
    {
         
      "script":{
         
        "source": "ctx._source.class_name = params.class_name", 
        "params": {
         
          "class_name":"計(jì)算機(jī)科學(xué)二班"
        }
      }
    }
    
    ## 
    ## 創(chuàng)建一個(gè) script 腳本
    POST _scripts/my_scripts_01
    {
         
      "script":{
         
        "source": "ctx._source.class_name = params.class_name", 
        "lang": "painless"
      }
    }
    
    ## 查看script腳本
    GET _scripts/my_scripts_01
    
    ## 刪除script腳本
    DELETE   _scripts/my_scripts_01
    
    ##使用腳本
    POST /student/_update/12345678
    {
         
      "script":{
         
        "id":"my_scripts_01",
        "params": {
         
          "class_name":"計(jì)算機(jī)科學(xué)三班"
        }
      }
    }
    
    ## 找到出name為小雅學(xué)生 修改為 小愛(ài)
    POST /student/_update_by_query
    {
         
       "query": {
         
        "match_phrase": {
         
          "name":"小雅" 
        }
      },
      "script": {
         
        "source": "ctx._source.name=params.name;ctx._source.class_name=params.class_name",
        "lang": "painless",
        "params": {
         
          "name":"小愛(ài)",
          "class_name":"二班"
        }
        
      }
    }
    
    

    ES內(nèi)部對(duì)partial update的實(shí)際執(zhí)行,跟傳統(tǒng)的全量替換方式,是幾乎一樣的

1.內(nèi)部先獲取document
2.將傳過(guò)來(lái)的field更新到document的json中
3.將老的document標(biāo)記為deleted
4.將修改后的新的document創(chuàng)建出來(lái)

  1. 查詢數(shù)據(jù)

    1. 查看篩選字段

      POST /student/_search
      {
             
        "query": {
             
          "match_all": {
             }
        },
        "_source": ["age","name","sno"] # 只顯示_doc的這三個(gè)字段 ,類似 mysql的 Select age,name,sno from student
      }
      
    2. 分頁(yè)類似mysql的 limit 和 排序 order by

      ## 分頁(yè) 0 - 3
      POST /student/_search
      {
             
        "query": {
             
          "match_all": {
             }
        },
        "from": 0,
        "size": 3  
      }
      ## 根據(jù) age 去排序
      POST /student/_search
      {
             
        "query": {
             
          "match_all": {
             }
        },
        "sort": [
          {
             
            "age": {
             
              "order": "desc"
            }
          }
        ], 
        "from": 0,
        "size": 3
        
      }
      
    3. terms 和term的使用,根據(jù)term 找到整個(gè)文檔,如果字段可以分詞,則模糊查出數(shù)據(jù),如果不能能分詞則需要數(shù)據(jù)字段中所有的數(shù)據(jù)

      {
             
        "query": {
             
         "terms": {
             
           "name": [
             "小",
             "雅"
           ]
         }
        },
        "from": 0,
        "size": 3
      }
      
      
      ## native 數(shù)據(jù)類型為keyword 無(wú)法分詞,不是模糊查詢
      POST /student/_search
      {
             
        "query": {
             
         "terms": {
             
           "native": [
             "廣州"
                 ]
         }
        },
        "from": 0,
        "size": 3
      }
      
      
      POST /student/_search
      {
             
        "query": {
             
         "term": {
             
           "name":"王"
         }
        },
        "from": 0,
        "size": 3
      }
      
      
    4. match的使用,是對(duì)term的封裝,如果可以分詞則把數(shù)據(jù)切割成多個(gè)term查詢,返回結(jié)果集文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-660363.html

    POST /student/_search
    {
         
      "query": {
         
        "match": {
         
          "native":"廣州天河區(qū)" 
        }
      },
      "from": 0,
      "size": 3
      
    }
    
    POST /student/_search
    {
         
      "query": {
         
        "match": {
         
          "native":"廣州" 
        }
      },
      "from": 0,
      "size": 3
      
    }
    
    POST /student/_search
    {
         
      "query": {
         
        "match": {
         
          "name":"小王" 
        }
      },
      "from": 0,
      "size": 3
      
    }
    
    ## 基于一個(gè)Filed匹配的內(nèi)容,采用and或者or的方式進(jìn)行連接
    POST /student/_search
    {
         
      "query": {
         
        "match": {
         
          "class_name":{
         
            "query": "一班 計(jì)算機(jī)",
            "operator": "and"
          } 
        }
      },
      "from": 0,
      "size": 3
      
    }
    
    1. multi_match的使用,一個(gè)text數(shù)據(jù)應(yīng)用在多字段上查詢的結(jié)果集合
    //相當(dāng)于mysql  (class_name like '%計(jì)算機(jī)%' ) or (name like '%計(jì)算機(jī)%')
    POST /student/_search
    {
         
      "query": {
         
        "multi_match": {
         
          "query": "計(jì)算機(jī)",
          "fields": ["class_name"

到了這里,關(guān)于ES完整使用從安裝到springboot項(xiàng)目操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

    ?? 前情提要: Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ① 目錄 ?一、Springboot 整合 Elasticsearch 1、RestHighLevelClient API介紹 1.1、全查詢 分頁(yè) 排序 1.2、單條件查詢 1.2.1、termQuery 1.2.2、matchQuery 1.2.3、短語(yǔ)檢索 1.3、組合查詢 1.4、范圍查詢 1.5、模糊查詢 1.6、分組

    2024年04月11日
    瀏覽(28)
  • 項(xiàng)目中使用es(二):使用RestHighLevelClient操作elasticsearch

    寫在前面 之前寫了有關(guān)elasticsearch的搭建和使用springboot操作elasticsearch,這次主要簡(jiǎn)單說(shuō)下使用RestHighLevelClient工具包操作es。 搭建環(huán)境和選擇合適的版本 環(huán)境還是以springboot2.7.12為基礎(chǔ)搭建的,不過(guò)這不重要,因?yàn)檫@次想說(shuō)的是RestHighLevelClient操作elasticsearch,RestHighLevelClient版本

    2024年02月14日
    瀏覽(26)
  • ElasticSearch保姆級(jí)教程[1]——SpringBoot 項(xiàng)目中使用 ES

    ElasticSearch保姆級(jí)教程[1]——SpringBoot 項(xiàng)目中使用 ES

    該教程主要分為 三篇文章。此為第一篇——主要介紹 ElasticSearch、Kibana 的安裝 以及如何 通過(guò) Http 和Java API的方式使用 ElasticSearch。學(xué)完本文,你就可以 在SpringBoot 項(xiàng)目中使用 ES了。第二篇超鏈接、第三篇超鏈接 一、實(shí)現(xiàn)ElasticSearch 單機(jī)運(yùn)行 1.1 安裝運(yùn)行ElasticSearch 首先,我們

    2023年04月10日
    瀏覽(15)
  • Kibana的簡(jiǎn)單安裝詳細(xì)步驟、以及如何簡(jiǎn)單的使用Kibana操作ES

    目錄 什么是Kibana KIbana的安裝與啟動(dòng) 下載 安裝 修改配置 啟動(dòng) 測(cè)試 搭配kibana使用ES index管理 mapping管理 更新mapping 刪除mapping

    2024年02月08日
    瀏覽(21)
  • springboot操作es

    springboot操作es

    一定要修改對(duì)應(yīng)es版本 修改es版本,我的pom文件: 記得把沒(méi)用文件刪掉.mvn,和一些mvn的配置文件,要不然可能會(huì)導(dǎo)致項(xiàng)目編譯不通過(guò) 注: 在ElasticSearch 7以后,Spring data建議采用High-level REST client。 在測(cè)試類進(jìn)行測(cè)試,測(cè)試類中直接注入restHighLevelClient即可使用; 文檔的增刪改查; bulk語(yǔ)法

    2024年02月09日
    瀏覽(15)
  • ElasticSearch的使用,安裝ik分詞器,自定義詞庫(kù),SpringBoot整合ES(增、刪、改、查)

    ElasticSearch的使用,安裝ik分詞器,自定義詞庫(kù),SpringBoot整合ES(增、刪、改、查)

    保存一個(gè)數(shù)據(jù),保存在哪個(gè)索引的哪個(gè)類型下,指定用哪個(gè)唯一標(biāo)識(shí)(相當(dāng)于,保存一個(gè)數(shù)據(jù),保存在那個(gè)數(shù)據(jù)庫(kù)中的哪個(gè)表中,指定主鍵ID) 例:PUT customer/external/1;在customer索引下的external類型下保存1號(hào)數(shù)據(jù)name為John Doe的數(shù)據(jù) POST和PUT都可以新增數(shù)據(jù) 注意: POST 新增。如果

    2023年04月25日
    瀏覽(59)
  • springboot與es集成操作-基礎(chǔ)篇

    springboot與es集成操作-基礎(chǔ)篇

    分頁(yè)查詢,高亮查詢 自動(dòng)補(bǔ)全 添加文檔數(shù)據(jù)

    2024年02月15日
    瀏覽(13)
  • 信創(chuàng)適配- 麒麟V10 安裝ES完整教程---單機(jī)版

    信創(chuàng)適配- 麒麟V10 安裝ES完整教程---單機(jī)版

    查看系統(tǒng)的架構(gòu), 下載合適的版本 由于此處我的架構(gòu)師arm64, 所以根據(jù)架構(gòu)選擇我的版本是 elasticsearch-7.17.8-linux-aarch64.tar.gz esx下載地址: https://www.elastic.co/cn/downloads/elasticsearch 1、創(chuàng)建ES 文件夾 2、上傳并解壓 3、創(chuàng)建用戶,授權(quán)訪問(wèn) 4、修改elasticsearch.yml配置文件, 注意:冒號(hào)后面

    2024年01月20日
    瀏覽(23)
  • springboot java 項(xiàng)目連接es

    小項(xiàng)目,沒(méi)有引用es客戶端,直接使用的http的方式進(jìn)行連接的,方式比較簡(jiǎn)單,但是依賴較少,一個(gè)比較小的項(xiàng)目,部署方便 業(yè)務(wù)也很簡(jiǎn)單就是把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀到es中,然后在做幾個(gè)接口讀es中的數(shù)據(jù) es版本 6.8.11 springboot 2.6.3 java 8 只有web和mysql的依賴,別的不需要 這里就

    2024年02月19日
    瀏覽(18)
  • 在SpringBoot中對(duì)es集群的查詢操作

    在SpringBoot中對(duì)es集群的查詢操作

    ? ? ????????將以上代碼復(fù)制到kibana的控制臺(tái)上運(yùn)行 ? ? ? ? ?運(yùn)行完后可以到打開(kāi)head插件查看信息 ? ? ? ? ? 數(shù)據(jù)準(zhǔn)備完成后我們就可以開(kāi)始查詢了 ???????? ? ? ? ? 通過(guò)上述兩個(gè)查詢我們發(fā)現(xiàn),查詢數(shù)據(jù)的時(shí)候會(huì)有很多冗余的部分,所以我們可以將這一部分代碼進(jìn)

    2024年02月12日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包