ElasticSearch 基础 文字教程

声明:本文大部分截图来自视频 https://www.bilibili.com/video/BV17a4y1x7zq,请尊重版权,转发请注明来源。

看看ElasticSearch做什么

适用场景:

生态:ELK

Elasticsearch+Logstash+Kibana

大数据技术和Google的渊源

es目录结构:

继续安装可视化界面,前端环境,nodejs,npm

说明:第3步,更改的是elasticsearch的config目录下elasticsearch.yml文件

一些术语:

索引:库

文档:数据

查看数据
复杂查询,提交restful 请求

kibana:使用kibana查询数据展示

https://www.elastic.co/cn/elastic-stack

kibana版本要与Elasticsearch的版本一致。

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz

tar zxf kibana-7.9.3-linux-x86_64.tar.gz

进入config目录,编辑kibana.yml,

找到 elasticsearch.hosts: [“****:9200”] 改为已经启动的es服务

进入bin目录,./kibana –allow-root 直接执行,等待启动完成

放弃了,linux服务器太弱,启动太慢了,用了将近10分钟,改用本地windows的了。

kibana中文配置: /config/kibana.yml 最后一行:i18n.locale: “zh-CN”

windows版切换ok,启动ok

访问localhost:5601

用的比较多的就是 开发工具菜单。

一些概念

倒排索引:划重点

====================================================

ik分词器

ik分词器下载:

https://github.com/medcl/elasticsearch-analysis-ik

编译后的,可以直接用的下载地址:

https://github.com/medcl/elasticsearch-analysis-ik/releases

我这里截图用的是7.9.3,配合elasticsearch的版本。

进入elasticsearch 的plugins目录

mkdir ik

cd ik

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

unzip elasticsearch-analysis-ik-7.9.3.zip

删除zip文件,重启elasticsearch

启动好之后,验证是否加载了插件,进入bin目录,执行如下命令

sh elasticsearch-plugin list

有ik分词器,即可。

使用kibana测试ik分词器

ik_smart:最小切分

ik_max_word:最细粒度划分

切换到kibana的开发工具:

GET _analyze
{
“analyzer”: “ik_smart” ,
“text”: [“烟熏童子鸡”]

}

ik_smart
ik_max_word

两种分词效果如上图示。

对于自定义配置,如何增加字典配置。

进入分词器目录,config/IKAnalyzer.cfg.xml

在config目录下新增一个test.dic,输入榜园

上图中改为<entry key=”ext_dict”>test.dic</entry>

效果:

自定义字典前的分词结果
自定义字典后的分词结果

====================================================

RestFul API & CRUD

创建一个索引:

PUT /test1/type1/1
{
“name”:”榜园-测试”,
“desc”:”1234″
}

kibana上查看下:

通过Restful API新增的索引

如何制定字段类型:创建索引规则

PUT /test2
{
“mappings”: {
“properties”: {
“name”:{
“type”: “text”
},
“desc”:{
“type”: “text”
},
“age”:{“type”: “integer”}
}
}
}

如果未指定类型,es会自动匹配类型。

Get命令:

GET /test1 获取索引

GET /test1/type1/1 获取文档

修改数据

方法一:PUT方式

PUT /test1/type1/1
{
“name”:”榜园-测试”,
“desc”:”12345″
}

version有了变化,从1变成2.

方法二:POST方式

POST /test1/type1/1/_update
{
“doc”:{
“desc”:”1234567″
}
}

可以看到version变成了3,desc内容也随之改变

删除:DELETE命令 根据命令提供的索引还是文档来进行删除动作

DELETE test1/type1/1

DELETE test1

复杂操作:条件查询

GET /test1/type1/_search?q=name:榜园

排序,分页,高亮,模糊查询,精确查询

基本查询:

GET _search
{
“query”: {
“match”: {
“name”: “榜园”
}}}

排序:sort

分页:from,size

多条件查询:bool 方式,must命令类比and条件,should类比or条件,must not 类比 not, filter:range,gt >,gte >=, lt <, lte <=

多个查询关键字,关键字之间用空格分开

精确查询:term

term是精确查找

match使用分词器查找

两个类型:text-会被分词器解析,keyword-不会被分词器解析

多个条件查询:

高亮查询:

设置高亮样式

====================================================

Spring boot集成ES

官方文档:

Elasticsearch Clients | Elastic

找到maven仓库配置

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

注意在java工程中使用的es high level版本要与es服务的版本一致

初始化ES client 对象:

CRUD:TODO

标签

发表评论