es集群环境搭建

Posted jasonzeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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操作接口

根据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

 

以上是关于es集群环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 7.X 集群环境搭建

Elasticsearch 7.X 集群环境搭建

搭建本地测试es集群

elasticsearch-7.8.0集群搭建(windows版本)

ElasticSearch集群的搭建

02 es 集群搭建