搜索模式
SQL模式
1,zhangsan,yuwen,98
2,lisi,yuwen,92
select * from user where name like '%l%';
select * from user where name like '%l%' and name like '%s%' ;
-缺点:
-需要将数据从头至尾遍历一遍
-我们的数据量在一直增加
倒排索引
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
-文本
-我是中国人 (我 是 我是 中国 中国人)
-2,我是中华人民共和国公民
-... (1000万)
-1003,中国领土的主权不容侵犯
-1004,台湾国中生生活节奏很懒散
-1005,中国人民正在实现中国梦
-古诗
七月在野,八月在宇,九月在户,十月蟋蟀入我床下。 先秦 《诗经·七月》
小时不识月,呼作白玉盘。——《古朗月行》李白。
烽火连三月,家书抵万金。——《春望》杜甫。
-更换数据的存储模式
-中国 1[2] 1003[0] 1005[0] 1005[8]
-月 1[2] 1[6] 1[10] 1[14] 1[24] 2[4] 2[13] 3[4]
https://developer.51cto.com/art/201904/594615.html
ElasticSearch概念
-
实时的数据搜索分析框架,使用restful风格
-
与Lucene和Solr的关系
es和solr都基于lucene -
与关系型数据库的对比
查询的时候从上到下查询,查询下面的就需要提供上面的
关系型 | ES |
---|---|
数据库 DataBase | Index |
表 Table | Type |
行 Row | Document |
列 Column | Field |
只是大小包含关系类似
搭建流程
上传解压移动
--解压:
tar -zxf elasticsearch-2.4.5.tar.gz
--移动:
mv elasticsearch-2.4.5 /opt/sxt/
配置文件:
--进入配置目录:
cd /opt/sxt/elasticsearch-2.4.5/config
修改配置文件
vim elasticsearch.yml
配置文件示例:
cluster.name: shsxt
node.name: node-bd1301
network.host: 192.168.241.211
上面对应行数 17 23 54
下面的代码添加到配置文件最后:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s
discovery.zen.ping.unicast.hosts: ["192.168.241.211","192.168.241.212", "192.168.241.213"]
--拷贝elasticsearch-2.4.5到其他主机并修改配置信息
scp -r elasticsearch-2.4.5 root@bd1302:/opt/sxt/
scp -r elasticsearch-2.4.5 root@bd1303:/opt/sxt/
--修改对应的name.node和network.host
创建用户&修改权限:
--3个主机创建新用户专门管理ES
--3台主机创建用户es 及密码
useradd es
passwd es
--设置文件的权限(修改文件所属)
cd /opt/sxt/
chown -R es:es elasticsearch-2.4.5
--切换用户
su es
--3台主机启动集群
./elasticsearch
一些可能出现的错误提示:
don’t run elasticsearch as root(忘记切换用户)
Log4j (没有为文件夹设置es用户权限)
访问集群
RestFul
数据库操作CRUD
restful
-URL可以唯一定位到一个资源
-我们使用固定的词去访问URL,我们得到的效果是不同的
-curl -X(GET获取 POST创建替换追加 PUT创建替换 DELETE删除)
-可以很好的屏蔽语言的差异
Index的操作
-创建是命名全部小写,不能使用_开头,中间不能使用,
-创建Index
curl -XPUT http://192.168.241.211:9200/xxxxx/
-获取索引
curl -XGET http://192.168.241.211:9200/xxxxx/
-删除索引
curl -XDELETE http://192.168.241.211:9200/xxxxx/
Document的操作
-创建type和插入数据(Post)
-每次操作得到的效果有可能是不同的
curl -XPOST http://192.168.241.211:9200/xxxxx/emp -d '{
"first_name" : "john",
"last_name" : "smith",
"age" : 25,
"about" : "I love to go rock climbing"
}'
curl -XPOST http://192.168.241.211:9200/xxxxx/emp -d '{
"first_name" : "zhang",
"last_name" : "san",
"age" : 18,
"about" : "pretty"
}'
curl -XPOST http://192.168.241.211:9200/xxxxx/emp -d '{
"first_name" : "li",
"last_name" : "si",
"age" : 18,
"about" : "pretty2"
}'
创建type和插入数据(put)
一般put操作为幂等操作,每次执行效果都是一样的
curl -XPUT http://192.168.241.212:9200/xxxxx/emp/1 -d '{
"first_name" : "wang",
"last_name" : "wu",
"age" : 50,
"about" : "handsome",
"address": "shanghai"
}'
-查看数据
//查询index
curl -XGET http://192.168.241.211:9200/xxxxx/_search
//查询type
curl -XGET http://192.168.241.211:9200/xxxxx/emp/_search
//按照ID查询文档
curl -XGET http://192.168.241.211:9200/xxxxx/emp/1
//查询指定的列
curl -XGET http://192.168.241.211:9200/xxxxx/emp/AW799O_-HSjlOiL4J82L?_source=age
curl -XGET http://192.168.241.211:9200/xxxxx/emp/_search?_source=age
//按照条件查询
curl -XGET http://192.168.241.211:9200/xxxxx/emp/_search?q=age:18
-修改数据
-------------------直接替换---------------------------------
curl -XPUT http://192.168.241.212:9200/xxxxx/test/1 -d '{
"hello":"world"
}'
curl -XPUT http://192.168.241.212:9200/xxxxx/test/1 -d '{
"hello":"moto"
}'
curl -XGET http://192.168.241.211:9200/xxxxx/test/_search?pretty
--------------------局部替换---------------------------------
curl -XPOST http://192.168.241.213:9200/xxxxx/stu/1 -d '{
"uname":"jiangyue",
"age":18
}'
curl -XPOST http://192.168.241.213:9200/xxxxx/stu/1/_update -d '{
"doc":{"uname":"zyn","city":"beijing"}
}'
curl -XGET http://192.168.241.212:9200/xxxxx/stu/1?pretty
-删除数据
curl -XDELETE http://192.168.241.212:9200/xxxxx/dept/2
curl -XGET http://192.168.241.212:9200/xxxxx/dept/_search
-DSL语言
//查询语句
curl -XGET http://192.168.241.211:9200/xxxxx/emp/_search?pretty -d '{
"query":
{"match":{"age":"18"}}
}'
Elasticsearch的插件配置
插件head
--进入bin目录
cd /opt/sxt/elasticsearch-2.4.5/bin
--安装3个主机的head插件命令
./plugin install file:/root/elasticsearch-head-master.zip
--在es的bin目录中执行plugin
插件license
--安装3个主机的license插件命令
./plugin install file:/root/license-2.4.5.zip
--在es的bin目录中执行plugin
插件Marvel-agent
--安装3个主机的Marvel-agent插件命令
./plugin install file:/root/marvel-agent-2.4.5.zip
--在es的bin目录中执行plugin
3种插件完成安装示意图:
修改3个插件的所属权限(直接修改整个目录)
--语法:
chown -R es:es elasticsearch-2.4.5/
修改后示意图:
Kibana
- ELK技术栈都属于Elastic公司
Elasticsearch + Logstash + Kibana - 给运维人员使用的工具,时刻监控es集群的状态
安装 Kibana(配置1台即可)
--解压tar包:
tar -zxvf kibana-4.6.2-linux-x86_64.tar.gz
--移动
mv kibana-4.6.2-linux-x86_64 /opt/sxt/
在安装目录中修改目录名
mv kibana-4.6.2-linux-x86_64/ kibana-4.6.2
安装 Kibana的marvel插件
--进入bin目录
cd /opt/sxt/kibana-4.6.2/bin/
--(本地 建议)
./kibana plugin --install marvel --url file:///root/marvel-2.4.6.tar.gz
--(网络 不推荐)安装kibana的marvel插件
./kibana plugin --install elasticsearch/marvel/latest
--修改配置文件
vim /opt/sxt/kibana-4.6.2/config/kibana.yml
修改示意图:
修改成任一主机地址都可以
启动es和kibana
启动3台es
--进入kibana的bin目录
cd /opt/sxt/elasticsearch-2.4.5/bin/
--切换用户
su es
--进入elasticsearch的bin目录后启动es
./elasticsearch
bd1301:9200
bd1301:9200/_plugin/head/
启动1台kibana
另开一个主机1用来开启kibana
--进入kibana的bin目录后启动kibana
cd /opt/sxt/kibana-4.6.2/bin/
./kibana