用于数据的搜索和分析引擎
1.docker上安装elasticsearch
下载镜像
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2 //elasticsearch可视化界面
创建两个目录用于挂载elasticsearch的配置和data
mkdir -p /mydata/elasticsearch/data
mkdir -p /mydata/elasticsearch/conf
chmod -R 777 /mydata/elasticsearch/ //設置目錄及其子目錄下下的所有文件其他用戶可讀可寫可執行
//设置此项代表elasticsearch可被远程任何机器访问(注意空格)
echo "http.host: 0.0.0.0">>mydata/elasticsearch/conf/elsticsearch.yml
docker run --name es7
-p 9200:9200 -p 9300:9300
-e "discovery.type=single-node"
-e ES_JAVA_OPTS="-Xms128m -Xmx256m"
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-d elasticsearch:7.4.2
docker logs es7 //查看日志
浏览器访问:http://192.168.56.10:9200 成功安装成功
安装kibanna
docker run --name kibana
-p 5601:5601
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200
-d kibana:7.4.2
浏览器访问:http://192.168.56.10:5601 成功安装成功
倒排索引
将文档的内容进行分词形成的词条,记录词条和数据的唯一标识的对应关系就是倒排索引
# es mysql
#index 对应 database
#type(现已废弃) 对应 table
#document 对应 表中的数据
#mapping 对应 表中字段类型
#index
#查看全部索引
GET _all
#创建index(创建索引库只能用put请求)
PUT person
#查看index
GET person
#删除index
DELETE person
#关闭打开索引
POST person/_close
POST person/_open
#elasticsearch常用数据类型
#字符串:
#text(会分词,不支持聚合)
#keyword(不会分词,支持聚合)
#数值
#integer short long byte double float
#布尔值 boolean
#日期
#date
#范围
#integer_range long_range double_range float_range date_range
#数组[]
#对象{}
#mapping
#添加映射(put或post)
PUT person/_mapping
{
"properties":{
"name":{
"type":"keyword"
},
"age":{
"type":"integer"
}
}
}
#获取映射
GET person/_mapping
#添加映射字段
PUT person/_mapping
{
"properties":{
"addr":{
"type":"text"
}
}
}
#创建index同时指定mapping
PUT person1
{
"mappings": {
"properties": {
"name":{
"type": "keyword"
},
"addr":{
"type": "text"
},
"age":{
"type": "integer"
}
}
}
}
GET person1
#document
#添加(put方式添加必须指定id post方式添加不用指定id,es会自动生成唯一id)
PUT person/_doc/1
{
"name":"lisi",
"age":25,
"addr":"四川绵阳"
}
POST person/_doc
{
"name":"zhangsan",
"age":12,
"addr":"四川成都"
}
#查询
GET person/_doc/1
#查询所有
GET person/_search
#修改
POST person/_doc/2QcAT38BMPv8A9061OE0
{
"name":"zhangsan1",
"age":12,
"addr":"四川成都"
}
#删除
DELETE person/_doc/1
#分词器(analyze)
# ik_smart 粗粒度切分 ik_max_word 细粒度切分
#安装ik分词器
下载https://github.com/medcl/elasticsearch-analysis-ik/必须下载与es对应版本的分词器
先执行 vi /etc/ssh/sshd_config
修改 PasswordAuthentication no 将no改为yes
重启服务 service sshd restart
使用finalshell连接Linux
将下载的分词器解压,上传到liunx mydata/elaticsearch/plugins下,重启es容器即可
GET _analyze
{
"analyzer": "ik_smart"
, "text": "华为手机是国产手机"
}
结果
{
"tokens" : [
{
"token" : "华为",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "手机",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "是",
"start_offset" : 4,
"end_offset" : 5,
"type" : "CN_CHAR",
"position" : 2
},
{
"token" : "国产手机",
"start_offset" : 5,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 3
}
]
}



