Elasticsearcha安装步骤与使用介绍

目录

一、什么是Elasticsearch

二、搭建Elasticsearch

1.安装ES

2.安装数据可视化界面 elasticsearch head

3.安装可视化 kibana 组件

4.安装 ik 分词器插件

三、ES 基本概念

四、ES 索引库基本操作

五、ES 文档操作

1.新增文档

2.查询文档

3.删除文档

4.修改文档

5.搜索文档

六、SpringBoot 集成 ES

1.指定版本

2.添加依赖

3、索引库操作

(1)创建索引库

(2)判断索引库是否存在

(3)删除索引库

4.文档操作

(1)添加文档

(2)修改文档

(3)查询文档

(4)删除文档

(5)搜索文档


一、什么是Elasticsearch

        Elasticsearch,简称为 ES,是一款非常强大的开源的高扩展的分布式全文 检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的 存储、检索数据.还可以可以实现日志统计、分析、系统监控等功能. 官网 例如京东,淘宝,头条等站内搜索功能.

二、搭建Elasticsearch

1.安装ES

ES 下载地址: https://www.elastic.co/cn/downloads/elasticsearch 默认打开是最新版本

7.6.1 版下载 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-windows-x86_64.zip

解压 在 bin 目录中 双击启动 elasticsearch.b

访问 http://127.0.0.1:9200

2.安装数据可视化界面 elasticsearch head

前提需要安装 nodejs github

下载: https://github.com/mobz/elasticsearch-head/

解压 从界面访问 9200 服务会出现跨域问题

在 config 目录中的 elasticsearch.yml 文件中配置

# 开启跨域

http.cors.enabled: true

# 所有人访问

http.cors.allow-origin: "*"

命令行进入目录

npm install

npm run star

访问:http://127.0.0.1:9100/

3.安装可视化 kibana 组件

Kibana 是一个针对 Elasticsearch 的开源分析及可视化平台,用来搜索、查看交互 存储在 Elasticsearch 索引中的数据。 使用 Kibana,可以通过各种图表进行高级数据分析及展示。Kibana 让海量数据更 容易理解

下载版本要和 ES 版本一致

下载地址: https://www.elastic.co/cn/downloads/kibana 默认打开是最新版本

7.6.1 下载版 https://artifacts.elastic.co/downloads/kibana/kibana-7.6.1-windows-x86_64.zip

汉化 kibana 修改 config 目录下的 kibana.yml 文件

i18n.locale: "zh-CN"

双击 bin 目录下的 kibana.bat

访问 http://127.0.0.1:5601

4.安装 ik 分词器插件

7.6.1 版下载 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch- analysis-ik-7.6.1.zip

解压,在elasticsearch-7.6.1\plugins目录下创建名称为ik的文件夹,

将解压后的文件复 制到 ik 目录.

自定义 ik 分词器(非必要,可以根据实际情况选择配置)

在 elasticsearch-7.6.1\plugins\ik\config

添加 xxx.dic 文件 定义词组, .dic 文件必须是 utf-8 编码格式,否则启动报错

在 IKAnalyzer.cfg.xml 文件添加自定义分词器文件

三、ES 基本概念

        elasticsearch 是面向文档存储的,可以是数据库中的一条商品数据,一个 订单信息。文档数据会被序列化为 json 格式后存储在 elasticsearch 中

索引:同类型文档的集合

文档:一条数据就是一个文档,es 中是 Json 格式 字段:Json 文档中的字段

映射:索引中文档的约束,比如字段名称、类型

关系行数据库 MySQL 和 elasticsearch 对比

Mysql:擅长事务类型操作,可以确保数据的安全和一致性

Elasticsearch:擅长海量数据的搜索、分析、计算.

正向索引和倒排索引 Mysql 采用正向索引:

基于文档 id 创建索引。查询词条时必须先找到文档,而后 判断是否包含搜索的内容. elasticsearch 采用倒排索引:

文档(document):每条数据就是一个文档

词条(term):文档按照语义分成的词语

四、ES 索引库基本操作

1.ES 索引库基本操作

mapping 属性

mapping 是对索引库中文档的约束,常见的 mapping 属性包括:

        type:字段数据类型,常见的简单类型有:

                字符串:text(可分词的文本),keyword(精确值,例如:品牌,国家,邮箱)

                数值:long、integer、short、byte、double、float、

                布尔:boolean

                日期:date

                对象:object

                index:是否创建索引参与搜索,默认为 true,如果不需要参与搜索设置为 false                

                analyzer:使用哪种分词器

创建索引库和 mapping 的语法如下:

2.查询索引库

语法: GET /索引库名

实例: GET /news

3.删除索引库

语法: DELETE /索引库名

实例: DELETE /news

4.修改索引库

索引库和 mapping 一旦创建无法修改,但是可以添加新的字段,语法如下:

五、ES 文档操作

1.新增文档

语法:

POST /索引库名/_doc/文档 id {

        “字段名 1”:”值 1”

        “字段名 2”:”值 2”

        .....

}

2.查询文档

语法:

GET /索引库名/_doc/文档 id

3.删除文档

语法:

DELETE /索引库名/_doc/档 id

4.修改文档

POST /索引库名/_update/文档 id {

        "doc":{

        "要修改的字段":"新值"

        }

}

5.搜索文档

GET /news/_search {

        "query":{

                "match":{

                "title":"美国"

                }

        }

}

六、SpringBoot 集成 ES

1.指定版本

版本必须与安装的 ES 版本一致

<properties>
<java.version>1.8</java.version>
<elasticsearch.version>7.6.1</elasticsearch.version>
</properties>

2.添加依赖

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>

3、索引库操作

(1)创建索引库

CreateIndexRequest request = new CreateIndexRequest("users");
CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);

(2)判断索引库是否存在

GetIndexRequest request = new GetIndexRequest("users");
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);

(3)删除索引库

DeleteIndexRequest indexRequest = new DeleteIndexRequest("users");
AcknowledgedResponse delete = restHighLevelClient.indices().delete(indexRequest, RequestOptions.DEFAULT);
delete.isAcknowledged();//返回 true 删除成功,返回 false 删除失败

4.文档操作

(1)添加文档

//将新闻添加到 mysql 的同时,将数据同步更新到 ES,为搜索提供数据
News news = new News();
news.setId(3);
news.setTitle("美国今年要总统选择,拜登着急了");
news.setImg("aaaaasssss.jpg");
IndexRequest indexRequest = new IndexRequest("news").id(news.getId().toString());
//将对象转为 json 存进 ES
indexRequest.source(new ObjectMapper().writeValueAsString(news),XContentType.JSON);
restHighLevelClient.index(indexRequest,RequestOptions.DEFAULT);

(2)修改文档

News news = new News();
news.setId(3);
news.setTitle("中国航母开往美国,准备开战,拜登着急了");
news.setImg("dddddddddddd.jpg");
UpdateRequest updateRequest = new UpdateRequest("news",news.getId().toString());
updateRequest.doc(new ObjectMapper().writeValueAsString(news), XContentType.JSON);
restHighLevelClient.update(updateRequest,RequestOptions.DEFAULT);

(3)查询文档

GetRequest getRequest = new GetRequest("news","1");
GetResponse getResponse = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
//获取查询的内容,返回 json 格式
String json = getResponse.getSourceAsString();
//使用 jackson 组件将 json 字符串解析为对象
News news = new ObjectMapper().readValue(json, News.class);

(4)删除文档

DeleteRequest deleteRequest = new DeleteRequest("news","1");
DeleteResponse delete = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);

(5)搜索文档


SearchRequest searchRequest = new SearchRequest("news");
SearchRequest searchRequest = new SearchRequest("news");
//精确条件查询
searchRequest.source().query(QueryBuilders.termQuery("title","美国"));
//发送查询请求
SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
//接收查询结果
SearchHits hits = search.getHits();
//组装查询结果
ArrayList<News> list = new ArrayList<>();
//取出结果集
for (SearchHit searchHit : hits.getHits()){
String json = searchHit.getSourceAsString();
News news = new ObjectMapper().readValue(json,News.class);
list.add(news);
}

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘伊珂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值