ElasticSearch基础入门
我的环境
windows7+jdk8+node10
1:单实例安装
下载:https://www.elastic.co/downloads/elasticsearch
下载解压之后进入config/elasitcsearch.yml修改配置文件:
在yml后面增加如下:
# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
# 集群名称和节点名称
cluster.name: kone
node.name: kone-master
# 指定這是主节点
node.master: true
network.host: 127.0.0.1
启动测试: 点击bin/elasticsearch.bat启动:
浏览器打开:http://127.0.0.1:9200/
2:插件安装(header插件)
github:下载链接:https://github.com/mobz/elasticsearch-head
解压之后npm install安装依赖之后再在文件夹主目录cmd 敲npm run start即可启动插件:
当没启动插件之前的kone-master主节点,打开浏览器进入9100端口:
当在启动插件前启动了主节点:
3:分布式安装
先对上面的配置进行修改:
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: kone
node.name: kone-master
node.master: true
network.host: 127.0.0.1
再新建了一个salve文件夹,再在里面新建slave1和slave2文件夹.把之前解压的es复制到这两个文件夹中,对两个节点的配置文件增加:
kone-slave1
# 子节点1配置:
# cluster.name和主节点一致
cluster.name: kone
node.name: kone_slave1
network.host: 127.0.0.1
# 默认9200,已被主节点使用
http.port: 9201
# 绑定到主节点上
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
kone-slave2
# 子节点2配置:
# cluster.name和主节点一致
cluster.name: kone
node.name: kone_slave2
network.host: 127.0.0.1
# 默认9200,已被主节点使用
http.port: 9202
# 绑定到主节点上
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
启动三个es,通过插件在浏览器中查看:
4: 创建索引:
非结构化索引创建省略,
结构化索引创建:
可以用刚才的header插件来创建,我用的postman:
注: 我用的是es7.x,不能指定索引类型,之前的版本可以指定.
刷新header插件的页面:
5:crud
A:插入
下图为指定id插入,随机id插入把url后面的数字去掉即可随机生成
结果:
B:修改
结果:
C:删除
删除数据:
删除索引:1:在header里面直接删除:
2:在postman里删除: 之前的人类索引被删除了,里面的数据也随之而去
D:查询
查询分为:简单查询,条件查询,聚合查询
为了方便查询:用下面的语句创建了book索引:
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"word_count": {
"type": "integer"
},
"author": {
"type": "keyword"
},
"title": {
"type": "text"
},
"publish_date": {
"format": "yyyy-MM-dd HH:mm:ss||uuuu-MM-dd||epoch_millis",
"type": "date"
}
}
}
}
并加入几条测试数据:
a:简单查询
b:条件查询
当然,上面只是查询所有的,
下面加一些条件:
c:聚合查询
结果:
6:高级查询
A:Query Context
又分为:
1:模糊查询
找到title中有"汪浩斌" 关键字的
2:短语匹配(match_phrase)
找到title中有"汪浩斌的成功学"的,精准匹配,知道的一条数据.
3:多个字段模糊匹配查询
author或者title中有"马晓利"的都会被查询到
4:语法查询(query_string)
找数据里面有XX且有XX的
找到数据中有XX或者有YY的
接上一张图的实例,查询中指定两个字段
5:范围查询
查询字数 在1000到里2000之间的(1000≤word_count≤2000)的.
gte:大于等于.lte:小于等于.gt:大于.lt:小于
日期范围:
B:Filter Context
解释:在查询过程中,只判断该文档是否满足条件,只有yes和no…
因为ES会对Filter的结果进行缓存,所以速度会比query快.
C:复合查询
推荐elasticSearch对配置写的比较详细的文章:
1:https://blog.csdn.net/gamer_gyt/article/details/59077189
2:https://www.cnblogs.com/zenan/p/10983580.html