Elasticsearch 学习
2023-02-10 17:20:18 1 举报
AI智能生成
Elasticsearch 学习总结
作者其他创作
大纲/内容
特点<br>
具有分布式的功能<br>数据高可用,集群高可用<br>API简单<br>多语言支持<br>支持PB级别的数据<br>完成搜索的功能和分析功能<br>基于Lucene,隐藏了Lucene的复杂性,提供简单的API
原理
1. elasticsearch 写入过程<br><br><br>
<br>
2. elasticsearch Translog 事务日志<br><br>
3. elasticsearch flash操作<br><br>
4. elasticsearch 删除更新<br><br>
5. elasticsearch segment 合并<br><br>
核心概念
索引 index
类型 type<br>
文档 document<br>
字段Field<br>
映射 mapping<br>
集群 cluster<br>
节点 node<br>
分片 shards<br>
复制 replicas<br>
安装
这里使用docker镜像下载<br>
docker pull elasticsearch:5.6.8
安装es容器
docker run -di --name=es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8<br>
测试<br>
9200端口为Web管理平台端口<br>9300为服务默认端口<br>浏览器输入地址访问: http://虚拟机IP地址:9200/
开启远程连接(默认不开启)
#1.进入容器<br>docker exec -it es /bin/bash<br>#2.进入config目录<br>cd config<br>#3.vi命令无法识别,因为docker容器里面没有该命令,我们可以安装该编辑器。<br>apt-get update<br>apt-get install vim<br>#4.等待安装好了后,修改elasticsearch.yml配置<br>vi elasticsearch.yml<br>#添加下面一行代码:<br>cluster.name: my-elasticsearch<br>#5.重启docker<br>docker restart es<br>
系统调优
#6.修改limits.conf <br>vi/etc/security/limits.conf<br>#7.添加下面两行代码:<br>* soft nofile 65536<br>* hard nofile 65536<br>修改vi /etc/sysctl.conf<br><br>#8.修改sysctl.conf <br>vi /etc/sysctl.conf<br>#9.添加下面一行代码<br>#限制一个进程可以拥有的VMA(虚拟内存区域)的数量 <br>vm.max_map_count=655360<br><br>#10.执行下面命令 修改内核参数马上生效<br>sysctl -p<br>#11.重启<br>reboot<br>
nofile是单个进程允许打开的最大文件个数<br>soft nofile 是软限制 hard nofile是硬限制
跨域配置
#12修改配置文件:elasticsearch.yml增加三句命令<br>http.cors.enabled: true #允许elasticsearch跨域访问,默认是false<br>http.cors.allow-origin: "*" #表示跨域访问允许的域名地址<br>network.host: 192.168.220.100 #这里写自己的虚拟机地址<br>#13.重启docker<br>docker restart es<br>#如果想让容器开启重启,可以执行下面命令<br>docker update --restart=always 容器名称或者容器id<br>
客户端操作
使用elasticsearch-head
下载head插件<br>
下载nodejs<br>
将grunt安装为全局命令
使用Postman工具进行Restful接口访问<br>
ElasticSearch的接口语法<br>
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>
创建索引index<br>
#请求url:<br>PUT 192.168.23.129:9200/aaa<br>#请求体:<br>{<br> "mappings": {<br> "article": {<br> "properties": {<br> "id": {<br> "type": "long",<br> "store": true,<br> "index":"not_analyzed"<br> },<br> "title": {<br> "type": "text",<br> "store": true,<br> "index":"analyzed",<br> "analyzer":"standard"<br> },<br> "content": {<br> "type": "text",<br> "store": true,<br> "index":"analyzed",<br> "analyzer":"standard"<br> }<br> }<br> }<br> }<br>}<br>
设置映射mapping<br>
#请求url:<br>POST http://192.168.23.129:9200/bbb/hello/_mappin<br>#请求体:<br>{<br> "hello": {<br> "properties": {<br> "id": {<br> "type": "long",<br> "store": true<br> },<br> "title": {<br> "type": "text",<br> "store": true,<br> "index":true,<br> "analyzer":"standard"<br> },<br> "content": {<br> "type": "text",<br> "store": true,<br> "index":true,<br> "analyzer":"standard"<br> }<br> }<br> }<br>}<br>
创建文档document<br>
#请求url:<br>POST 192.168.23.129:9200/bbb/hello/1<br>#请求体:<br>{<br> "id":1,<br> "title":"aaa",<br> "content":"bbb"<br>}<br>
修改文档document<br>
#请求url:<br>POST 192.168.23.129:9200/bbb/hello/1<br>#请求体:<br>{<br> "id":1,<br> "title":"ccc",<br> "content":"ddd"<br>}<br>
删除文档document<br>
#请求url:<br>DELETE 192.168.23.129:9200/aaa<br>
查询文档-根据id查询<br>
#新建一个document<br>POST 192.168.23.129:9200/bbb/hello/1<br>{<br> "id":1,<br> "title":"床前明月光aaa",<br> "content":"疑是地上霜bbb"<br>}<br><br><br>#查询文档-根据id查询<br>GET 192.168.23.129:9200/bbb/hello/1<br>
查询文档-querystring查询<br>
用querystring查询会进行分词,此时用的是Standard分词
#请求url:<br>POST 192.168.23.129:9200/bbb/hello/_search<br>{<br> "query": {<br> "query_string": {<br> "default_field": "title",<br> "query": "床前明月光"<br> }<br> }<br>}<br>
查询文档-term查询
term查询不会进行分词
#请求url:<br>POST 192.168.23.129:9200/bbb/hello/_search<br>{<br> "query": {<br> "term": {<br> "title": "前"<br> }<br> }<br>}<br>
IK分词器
概念
基于 java 语言开发的轻量级的中文分词工具包
ik_smart为最少切分<br>
ik_max_word为最细粒度划分
安装
#解压<br>unzip elasticsearch-analysis-ik-5.6.8.zip<br>#改名为ik<br>mv elasticsearch ik<br>#将ik目录拷贝到docker容器的plugins目录下<br>docker cp ./ik es:/usr/share/elasticsearch/plugins
使用<br>
新建索引<br>
<br>PUT 192.168.23.129:9200/ccc<br>{<br> "mappings": {<br> "article": {<br> "properties": {<br> "id": {<br> "type": "long",<br> "store": true,<br> "index":"not_analyzed"<br> },<br> "title": {<br> "type": "text",<br> "store": true,<br> "index":"analyzed",<br> "analyzer":"ik_max_word"<br> },<br> "content": {<br> "type": "text",<br> "store": true,<br> "index":"analyzed",<br> "analyzer":"ik_max_word"<br> }<br> }<br> }<br> }<br>}<br>}<br>
Kibana使用<br>
概念
Kibana 是一款开源的数据分析和可视化平台<br>使大数据通俗易懂<br>
下载安装
#镜像下载<br>docker pull docker.io/kibana:5.6.8<br>#安装kibana容器<br>docker run -it -d -e ELASTICSEARCH_URL=http://192.168.23.129:9200 --name kibana<br>-p 5601:5601 kibana:5.6.8<br>
DSL语句使用<br>
java操作Elasticsearch<br>
创建索引index<br>
创建映射mapping<br>
建立文档document<br>
查询文档操作
使用termQuery查询<br>
使用QueryString<br>
使用MatchQuery<br>
使用Id查询<br>
查询MathAll<br>
高亮显示代码实现
Spring Data ElasticSearch
Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。<br>其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。<br> Spring Data可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。<br>除了CRUD外,还包括如分页、排序等一些常用的功能
0 条评论
下一页
为你推荐
查看更多