es集群環境搭建、基本操作


服務器環境
准備三台服務器集群

服務器名稱    IP地址
node-1    192.168.1.182
node-2    192.168.1.183
node-3    192.168.1.184


服務集群配置
vi elasticsearch.yml
cluster.name: myes  ###保證三台服務器節點集群名稱相同
node.name: node-1 #### 每個節點名稱不一樣 其他兩台為node-1 ,node-2
network.host: 192.168.1.180 #### 實際服務器ip地址
discovery.zen.ping.unicast.hosts: ["192.168.1.182", "192.168.1.183","192.168.1.184"]##多個服務集群ip
discovery.zen.minimum_master_nodes: 1

關閉防火牆 systemctl stop firewalld.service
默認底層開啟9300 集群
驗證集群效果
http://192.168.1.184:9200/_cat/nodes?pretty


注意克隆data文件會導致數據不同步
報該錯誤解決辦法 
failed to send join request to master
因為克隆導致data文件也克隆呢,直接清除每台服務器data文件。

 
*號表示為master節點




#es常用restful操作接口

# 查詢索引
GET http://localhost:9200/_cat/indices?v
# 刪除索引
DELETE http://localhost:9200/indexname

根據id進行查詢

GET /selfindex/user/12

查詢當前所有類型的文檔

GET /selfindex/user/_search

 

根據多個ID批量查詢

查詢多個id分別為1、2

GET /selfindex/user/_mget

{

  "ids":["1","2"]

 

}

復雜條件查詢

查詢年齡為年齡21歲

GET /selfindex/user/_search?q=age:21

 

查詢年齡30歲-60歲之間

 

GET /selfindex/user/_search?q=age[30 TO 60]

注意:TO 一定要大寫

 

查詢年齡30歲-60歲之間 並且年齡降序、從0條數據到第1條數據

GET /selfindex/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1

 

查詢年齡30歲-60歲之間 並且年齡降序、從0條數據到第1條數據,展示name和age字段

 

GET /selfindex/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1

&_source=name,age

 

Dsl語言查詢與過濾

什么是DSL語言

es中的查詢請求有兩種方式,一種是簡易版的查詢,另外一種是使用JSON完整的請求體,叫做結構化查詢(DSL)。
由於DSL查詢更為直觀也更為簡易,所以大都使用這種方式。
DSL查詢是POST過去一個json,由於post的請求是json格式的,所以存在很多靈活性,也有很多形式。

 

根據名稱精確查詢姓名

 

GET selfindex/user/_search

{

  "query": {

    "term": {

      "name": "xiaoming"

    }

   

  }

 

}

 

##term是代表完全匹配,即不進行分詞器分析,文檔中必須包含整個搜索的詞匯

根據汽車名稱模糊查詢

GET /selfindex/user/_search

{

  "from": 0,

  "size": 2,

  "query": {

    "match": {

     

        "car": "奧迪"

      }

  }

}

 

####match查詢相當於模糊匹配,只包含其中一部分關鍵詞就行

 #根據條件刪除

POST selfindex/user/_delete_by_query

{"query":{
"match":{"name":"zs"}
}}

 #根據條件查詢

POST selfindex/user/_search

{"query":{
"match":{"name":"zs"}
}}

Term與Match區別

Term查詢不會對字段進行分詞查詢,會采用精確匹配。

Match會根據該字段的分詞器,進行分詞查詢。

 

使用filter過濾年齡

 

GET /selfindex/user/_search

{

         "query": {

                   "bool": {

                            "must": [{

                                     "match_all": {}

                            }],

                            "filter": {

                                     "range": {

                                               "age": {

                                                        "gt": 21,

                                                        "lte": 51

                                               }

                                     }

 

                            }

 

                   }

 

         },

         "from": 0,

         "size": 10,

         "_source": ["name", "age"]

 

}





#es常用數據類型

基本類型

符串:string,string類型包含 text 和 keyword。

 

text:該類型被用來索引長文本,在創建索引前會將這些文本進行分詞,轉化為詞的組合,建立索引;允許es來檢索這些詞,text類型不能用來排序和聚合。

keyword:該類型不需要進行分詞,可以被用來檢索過濾、排序和聚合,keyword類型自讀那只能用本身來進行檢索(不可用text分詞后的模糊檢索)。

注意: keyword類型不能分詞,Text類型可以分詞查詢

數指型:long、integer、short、byte、double、float

日期型:date

布爾型:boolean

二進制型:binary

數組類型(Array datatype)

復雜類型

地理位置類型(Geo datatypes)

地理坐標類型(Geo-point datatype):geo_point 用於經緯度坐標

地理形狀類型(Geo-Shape datatype):geo_shape 用於類似於多邊形的復雜形狀

 

特定類型(Specialised datatypes)

Pv4 類型(IPv4 datatype):ip 用於IPv4 地址

Completion 類型(Completion datatype):completion 提供自動補全建議

Token count 類型(Token count datatype):token_count 用於統計做子標記的字段的index數目,該值會一直增加,不會因為過濾條件而減少

mapper-murmur3 類型:通過插件,可以通過_murmur3_來計算index的哈希值

附加類型(Attachment datatype):采用mapper-attachments插件,可支持_attachments_索引,例如 Microsoft office 格式,Open Documnet 格式, ePub,HTML等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM