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