什么是倒排索引
信息存储到es时,首先把每条语句分成一个一个的词语
根据搜索的内容,进行分配,有匹配到的权重+1
把匹配到的语局给呈现出来
elasticsearch介绍 elasticsearch应用场景
电商平台
高亮显示搜索的词条信息
日志分析elk
elasticsearch特点
高性能:es可以支持一主多从,水平扩展方便
高可用性:一个主节点宕机后不影响用户的使用。
用户使用方便快捷:es采用Java开发,即使不懂Java代码,一样可以使用
功能丰富,配置简单
采用restful封装的接口,可以通过http发起请求
elasticsearch部署方法
安装方式
优点
对运维的要求
docker
部署方便、开箱即用、启动迅速
需要会docker知识、需要制作镜像、修改配置麻烦、数据需要挂载目录
tar
部署灵活、对系统侵占性小
需要写启动脚本文件、目录需要提前规划
rpm
部署方便、启动脚本安装即用、存放目录标准化
软件各个组件分散在不同的目录、卸载不彻底、默认配置需要修改
ansible
极其灵活、批量部署速度快
需要学习ansible语法、需要提前规划、需要专人维护
安装jdk 1 2 3 4 5 6 7 8 9 10 11 12 13 wget https://download.oracle.com/otn/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz [root@db01 /server/tools] [root@db01 /application] cat >>/etc/bashrc <<'EOF' export JAVA_HOME=/application/jdk export PATH=$JAVA_HOME /bin:$JAVA_HOME /jre/bin:$PATH export CLASSPATH=.:$JAVA_HOME /lib:$JAVA_HOME /jre/lib:$JAVA_HOME /lib/tools.jarEOF [root@db01 /application] [root@db01 /application] java version "1.8.0_131"
安装elasticsearch 1 2 3 4 5 6 7 8 9 10 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm //上传elasticsearch-6.6.0.rpm [root@db01 /server/tools] sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
配置启动 1 2 3 4 5 6 7 8 sed -i 's%#JAVA_HOME=%JAVA_HOME=/application/jdk/%g' /etc/sysconfig/elasticsearch //更改JAVA_HOME systemctl daemon-reload systemctl enable elasticsearch.service systemctl start elasticsearch.service systemctl status elasticsearch.service systemctl is-active elasticsearch.service
检查启动 1 2 3 ps -ef | grep elastic lsof -i:9200 curl localhost:9200
查看配置文件位置 1 2 3 4 5 6 7 [root@db01 ~] /etc/elasticsearch/elasticsearch.yml //主配置文件 /etc/elasticsearch/jvm.options //java虚拟机配置 /etc/init.d/elasticsearch //init.d启动脚本 /etc/sysconfig/elasticsearch //环境变量,如java_home /usr/lib/sysctl.d/elasticsearch.conf //最大连接数,不需要动 /usr/lib/systemd/system/elasticsearch.service //systemd启动脚本
调整jvm配置 1 2 3 4 5 6 vim /etc/elasticsearch/jvm.options -Xms1500m //最小内存 -Xmx1500m //最大内存,根据服务器配置调整 1.不要超过30G 2.最好预留总内存的50%
调整elasticsearch配置 1 2 3 4 5 6 7 8 9 10 vim /etc/elasticsearch/elasticsearch.yml node.name: node-1 //节点名称 path.data: /data/elasticsearch //数据目录 path.logs: /var/log/elasticsearch //日志目录 bootstrap.memory_lock: true //开启jvm内存锁定 network.host: 10.0.0.51,127.0.0.1 //绑定本机ip http.port: 9200 //默认端口号 mkdir -p /data/elasticsearchchown elasticsearch.elasticsearch -R /data/elasticsearch
启动报错 1 2 3 [2019-07-09T10:49:36,109][ERROR][o.e.b.Bootstrap ] [node-1] node validation exception [1] bootstrap checks failed [1]: memory locking requested for elasticsearch process but memory is not locked
解决方法: 参考官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setup-configuration-memory.html https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setting-system-settings.html
1 2 3 4 5 6 7 systemctl edit elasticsearch [Service] LimitMEMLOCK=infinity systemctl daemon-reload systemctl start elasticsearch
报错总结:
配置文件没有任何修改
配置文件没有修改IP地址
系统内存只有1个G,启动失败
配置文件参数拼写错误,启动失败
忘记修改内存锁定,启动失败
重启linux
MySQL对比ES
MySQL
ES
库
index(索引)
表
type(类型)
行
doc(文档)
字段
Fields(文档存在多个字段)
检查ES是否正常
浏览器访问 http://10.0.0.51:9200
shell运行curl 10.0.0.240:9200
ES的交互方式 说明: es还为我们提供了基于http协议——以json为数据交互格式的restful API。通过9200端口与es进行通信,你甚至可以通过curl命令与es通信。
curl命令:
特点:最繁琐,最复杂,最容易出错
要求:不需要安装任何软件,只需要有curl命令
es-head插件
特点:查看数据方便,操作相对容易
要求:需要nodejs环境
kibana
特点:查看数据以及报表格式丰富,操作很简单
要求:需要java环境和安装配置kibana
curl交互演示 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 curl 10.0.0.51:9200/_cat/nodes curl 10.0.0.51:9200/_cat/health curl -XPUT '10.0.0.51:9200/pincheng?pretty' curl 10.0.0.51:9200/_cat/indices curl 10.0.0.51:9200/_cat/shards curl -XPUT '10.0.0.51:9200/pincheng/student/1?pretty' -H 'Content-Type: application/json' -d' { "first_name" : "zhang", "last_name": "san", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports" ] }' curl -XPOST '10.0.0.51:9200/pincheng/student?pretty' -H 'Content-Type: application/json' -d' { "first_name": "li", "last_name" : "si", "age" : 32, "about" : "I like to collect rock albums", "interests": [ "music" ] }' curl -XGET '10.0.0.51:9200/pincheng/student/_search?pretty' curl -XGET '10.0.0.51:9200/pincheng/student/1?pretty' curl -XDELETE '10.0.0.51:9200/pincheng/student/1?pretty' curl -XDELETE 'localhost:9200/vipinfo?pretty' curl -XPUT '10.0.0.51:9200/_template/template_http_request_record' -H 'Content-Type: application/json' -d' { "index_patterns": ["*"], "settings": { "number_of_shards" : 5, "number_of_replicas" : 1 } }'
es-head插件交互 安装node-js环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 cd /server/toolswget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-x64.tar.xz tar -xf node-v12.16.3-linux-x64.tar.xz yum -y install openssl screen kernel-devel mv node-v12.16.3-linux-x64/ /application/ln -s /application/node-v12.16.3-linux-x64/ /application/nodecat >> /etc/bashrc <<'EOF' export NODE_HOME=/application/nodeexport PATH=$NODE_HOME /bin:$PATH EOF . /etc/bashrc [root@db01 ~] v12.16.3 6.14.4
安装es-head 1 2 3 4 5 6 7 8 9 10 npm install -g cnpm --registry=https://registry.npm.taobao.org cd /application/git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head/cnpm install //安装依赖 screen -S es-head //离线运行 cnpm run start //启动es-head
跨域问题 官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-http.html
1 2 3 4 5 vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true //如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。 http.cors.allow-origin: "*" //如果 http.cors.enabled 的值为 true ,那么该属性会指定允许 REST 请求来自何处。 systemctl restart elasticsearch
Chrome插件 安装地址: https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/related