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集群环境搭建的主要内容,如果未能解决你的问题,请参考以下文章