Elasticsearch

1、软件安装

  • elasticsearch:存储、搜索和运算
  • kibana:图形化展示
    Elasticsearch对外提供的是Restful风格的API,任何操作都可以通过发送http请求来完成。不过http请求的方式、路径、还有请求参数的格式都有严格的规范。这些规范我们肯定记不住,因此我们要借助于Kibana这个服务,Kibana提供的开发工具可以简单的发送http请求操作ES。

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 hmall
-p 9200:9200
-p 9300:9300
elasticsearch:7.12.1

docker run -d
–name kibana
-e ELASTICSEARCH_HOSTS=http://es:9200
–network=hmall
-p 5601:5601
kibana:7.12.1

2、倒排索引

在这里插入图片描述

流程描述:
1)用户输入条件"华为手机"进行搜索。
2)对用户输入条件分词,得到词条:华为、手机。
3)拿着词条在倒排索引中查找(由于词条有索引,查询效率很高),即可得到包含词条的文档id:1、2、3。
4)拿着文档id到正向索引中查找具体文档即可(由于id也有索引,查询效率也很高)。
虽然要先查询倒排索引,再查询倒排索引,但是无论是词条、还是文档id都建立了索引,查询速度非常快!无需全表扫描。
正向索引缺点:根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
倒排索引优点缺点:只能给词条创建索引,而不是字段;无法根据字段做排序

3、中文分词器IK

·分词器的作用是什么?

  • 创建倒排索引时,对文档分词
  • 用户搜索时,对输入的内容分词
    ·IK分词器有几种模式?
  • ik_smart:智能切分,粗粒度
  • ik_max_word:最细切分,细粒度
    ·IK分词器如何拓展词条?如何停用词条?
  • 利用config目录的IkAnalyzer.cfg.xml文件添加拓展和停用词典
  • 在词典中添加拓展词条或者停用词条

4、ES和Mysql对比助记

在这里插入图片描述

5、索引库CRUD

创建索引库和映射:
PUT /heima
{
“mappings”: {
“properties”: {
“info”:{
“type”: “text”,
“analyzer”: “ik_smart”
},
“email”:{
“type”: “keyword”,
“index”: “false”
},
“name”:{
“properties”: {
“firstName”: {
“type”: “keyword”
}
}
}
}
}
}
查询索引库:
GET /heima
删除索引库
DELETE /heima
修改索引库,只支持添加新的字段,不支持修改(词条重建太难)
PUT /heima/_mapping
{
“properties”: {
“age”:{
“type”: “integer”
}
}
}

6、文档CRUD

POST /heima/_doc/1
{
“info”: “黑马程序员Java讲师”,
“email”: “zy@itcast.cn”,
“name”: {
“firstName”: “云”,
“lastName”: “赵”
}
}
Get /heima/_doc/1
DELETE /heima/_doc/1
#全量修改
PUT /heima/_doc/1
{
“info”: “黑马程序员高级Java讲师”,
“email”: “zy@itcast.cn”,
“name”: {
“firstName”: “三”,
“lastName”: “张”
}
}
#局部修改
POST /heima/_update/1
{
“doc”: {
“email”: “ZhaoYun@itcast.cn”
}
}
#批量新增
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”}}

7、还可以在java中代码操作ES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值