高性能分布式的搜索引擎。
可以对搜索进行多种不同的实现。
安装
对Elasticsearch的安装
访问192.168.202.129:9200
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network hm-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
对Kibana的安装
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601 \
kibana:7.12.1
访问192.168.202.129:5601
在Dev-tool里面可以向Es发送请求
倒排索引
IK分词器
实现IK分词器的安装
docker exec -it es ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
然后重启es
docker restart es
使用IK分词器
POST /_analyze
{
"analyzer": "standard",
"text": "黑马程序员学习java太棒了"
}
基本概念
索引库操作
Mapping映射属性
索引库操作
#创建索引库
PUT /heima
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart"
},
"age":{
"type": "byte"
},
"email":{
"type": "keyword",
"index": false
},
"name":{
"type": "object",
"properties": {
"firstName":{
"type":"keyword"
},
"lastName":{
"type":"keyword"
}
}
}
}
}
}
#查询索引库
GET /heima
#删除索引库
DELETE /heima
我们不可以对已经存在的索引库进行修改,但是可以添加新的字段
PUT /heima/_mapping
{
"properties":{
"age":{
"type":"byte"
}
}
}
文档操作
文档crud
POST /heima/_doc/1
{
"info": "黑马程序员Java讲师",
"email": "zy@itcast.cn",
"name": {
"firstName": "四",
"lastName": "赵"
}
}
POST /heima/_update/1
{
"doc": {
"email":"1111"
}
}
改有两种方式,第一种就是直接在原来基础上改,这样做就是覆盖了之前的文档,先删后增。
第二种就是用_update,然后改哪个字段就写哪个字段。
文档批量处理
POST /_bulk
{"index": {"_index":"heima", "_id": "3"}}
{"info": "黑马程序员C++讲师", "email": "ww@itcast.cn", "name":{"firstName": "五", "lastName":"王"}}
{"index": {"_index":"heima", "_id": "4"}}
{"info": "黑马程序员前端讲师", "email": "zhangsan@itcast.cn", "name":{"firstName": "三", "lastName":"张"}}
#批量删除
POST /_bulk
{"delete":{"_index":"heima","_id":3}}
{"delete":{"_index":"heima","_id":4}}