首页 > 其他分享 >ElasticSearch搜索引擎介绍+性能监控及调优

ElasticSearch搜索引擎介绍+性能监控及调优

时间:2024-03-28 20:33:30浏览次数:240  
标签:compose -- 搜索引擎 索引 调优 ElasticSearch elasticsearch docker

在这里插入图片描述

ElasticSearch搜索引擎介绍

一、概述

搜索在现代日常生活场景中都非常常见,如百度、京东、天猫等等。数据量都是庞大的,所以直接基于数据库搜索必定不是他们的首选,在这些场景下,要完成数据的高效搜索,都会基于搜索引擎实现。

而对于搜索实现来说,市面上常见三种技术:Lucene、Solr、ElasticSearch。Lucene严格意义来讲,并不能称为搜索引擎,其本身是一套类库,需要开发人员根据其内部API完成具体功能实现。而Solr和ElasticSearch都是基于Lucene进行了封装,他俩可以称为搜索引擎。但由于实现细节的不同,所以ElasticSearch是目前搜索引擎的首选。

ElasticSearch是一个开源的、支持分布式的、能够进行近实时搜索和分析、能够处理PB级数据量的搜索引擎。目前有很多平台和工作场景会涉及到对ElasticSearch的使用

  • 维基百科数据搜索
  • Github数据搜索
  • 电商平台商品搜索
  • 数据分析和挖掘

二、ElasticSearch和MySQL的区别

Lucene 算法 倒排索引 先分词 建立原来数据的关系

  • Mysql数据操作具备事务性,而ElasticSearch没有
  • MySQL支持外键,而ElasticSearch不支持
  • Mysql采用B+树索引,而ElasticSearch采用倒排索引
    在这里插入图片描述

三、ES安装

采用docker-componse工具安装

1、下载docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/dockercompose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、授权

sudo chmod +x /usr/local/bin/docker-compose

3、创建链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4、检查安装是否完成

docker-compose -v

5、相关命令

--查看版本
docker-compose version
--根据yml创建
service docker-compose up -d
–-指定yaml
docker-compose up -f xxx.yaml
--查看images
docker-compose images
--停止/启动service
docker-compose stop/start
--销毁
docker-compose down

6、ES安装

--创建两个目录
mkdir -p /usr/local/elk/{elasticsearch/data,elasticsearch/plugins}
--授权
chmod 777 /usr/local/elk/elasticsearch/data

vim docker-compose.yml

version: '3'
services:
elasticsearch:
image: elasticsearch:7.10.1 #镜像
container_name: elasticsearch #定义容器名称
restart: always #开机启动,失败也会一直重启
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx1024m" #设置使用jvm内存大小 生成环境建议最低3g以上
volumes:
- /usr/local/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #
插件文件挂载
- /usr/local/elk/elasticsearch/data:/usr/share/elasticsearch/data #数据文件
挂载
ports:
- 9200:9200
kibana: #图形化操作工具
image: kibana:7.10.1
container_name: elk_kibana
restart: always
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200 #设置访问elasticsearch的地址
ports:
- 5601:5601

docker-componse up -d

http://ip:5601/
在这里插入图片描述

四、 ElasticSearch核心概念介绍

ES在使用时,会涉及到五个核心概念:索引(Index)、映射(Mapping)、文档(Document)、倒排索引。
在这里插入图片描述
注:在老版本ElasticSearch中还有一个概念Type,用于进行数据分类,但是在ES7开始已经将Type移除

4.1 索引(index)

索引相当于关系型数据库中的一张表,一个index包含若干document,通过Index代表一类类似的或者相同的document。

4.1.1 添加索引

-- PUT 索引名称
PUT person

在这里插入图片描述

4.1.2 查询索引

-- 查询单个索引 GET 索引名称
GET person
-- 查询多个索引信息 GET 索引名称,索引名称
GET person,person1
-- 查询所有索引信息
GET _all

在这里插入图片描述

4.1.3 删除索引

-- 删除索引 DELETE 索引名称
DELETE person1

在这里插入图片描述

4.2 映射(Mapping)

域(Field)相当于数据表中的字段列,当有了索引之后,需要在索引中设置域的相关信息如:名称,
类型等。这个过程称为:映射(Mapping)。相当于关系型数据库中表的设计。
在这里插入图片描述

4.2.1 数据类型

字符串
  • text:会进行分词,如华为手机,会分成:华为,手机。 被分出来的每一个词,称为term(词
    条)
  • keyword:不会进行分词,如华为手机,只有一个词条,即华为手机。
数值
  • long:带符号64位整数
  • integer:带符号32位整数
  • short:带符号16位整数
  • byte:带符号8位整数
  • double:双精度64位浮点数
  • float:单精度32位浮点数
  • half_float:半精度16位浮点数
布尔
  • binary
日期
  • date
范围类型
  • integer_range

  • float_range

  • long_range

  • double_range

  • date_range

数组
  • 对象

4.2.2 添加映射

  • 对于映射,只能进行字段添加,不能对字段进行修改或删除,如有需要,则重新创建映射
添加映射(添加/修改字段)
-- 为已存在的索引库添加映射
PUT person/_mapping
{
"properties":{
"name":{
"type":"text"
},
"age":{
"type":"integer"
}
}
}
-- 创建索引+映射
PUT person
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}

在这里插入图片描述

查看映射
--查看索引映射信息
GET person/_mapping

在这里插入图片描述

4.3 文档(Document)

  • ES中最小的数据单元,代表索引中的一条数据,通常是使用json的数据格式表示的

4.3.1 添加文档(添加一行数据)

  • 手动设置id
POST person/_doc/1
{
"name":"张三",
"age":18,
"address":"北京"
}
  • 自动生成id
POST person/_doc
{
"name":"张三",
"age":18,
"address":"北京"
}

在这里插入图片描述

4.3.2 查询文档

  • 根据id查询文档
GET person/_doc/1

在这里插入图片描述

  • 查询所有文档
GET person/_search	

在这里插入图片描述

4.3.3 修改文档

PUT person/_doc/1
{
"name": "张三丰",
"age": 180,
"address": "武当山"
}

在这里插入图片描述

4.3.4 删除文档

--DELETE 索引名称/_doc/文档id
DELETE person/_doc/1

在这里插入图片描述

五、ik分词器及搜索支持

5.1 分词器

  • 默认分词器支持英文及空格

在这里插入图片描述

POST _analyze
{
"text": "I love beijing"
}
POST _analyze
{
"text": "Ilovebeijing"
}
POST _analyze
{
"text": "我爱北京天安门"
}
  • 需安装分词器
    在这里插入图片描述
  • 支持 ik_max_word、 ik_smart 两种分词器
PUT person2
{
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_smart"
},
"age": {
"type": "integer"
},
"address":{
"type":"text",
"analyzer": "ik_max_word"
}
}
}
}

5.2 搜索

  • term:搜索内容不进行分词
  • match:对搜索内容进行分词,同时搜索:北京、大运河
--term:对搜索内容不进行分词
GET person2/_search
{
"query": {
"term": {
"address": "大运河"
}
}
}
#match:对搜索内容进行分词,同时搜索:北京、大运河
GET person2/_search
{
"query": {
"match": {
"address": "北京大运河"
}
}
}

5.3 高亮提示

标签:compose,--,搜索引擎,索引,调优,ElasticSearch,elasticsearch,docker
From: https://blog.csdn.net/su3su3su3/article/details/137105593

相关文章

  • elasticsearch基础使用
    索引操作mapping映射属性type:字段数据类型,字符串:text(可分词的文本),keyword(精确值,不可以分词的文本)如下图,邮箱就是keyword,名字就是tex数值:long,integer,short,byte,double,float布尔:boolean日期:dateindex:是否创建倒排索引,默认是trueanalyzer:使用哪种分词器properti......
  • Elasticsearch入门及常用命令和Spring中的常用操作
    入门官网简介一个分布式的、Restful风格的搜索引擎。支持对各种类型的数据的检索。搜索速度快,可以提供实时的搜索服务。便于水平扩展,每秒可以处理PB级海量数据。常用术语索引:与MySQL数据库中的Database相对应类型:与MySQL数据库中的Table相对应文档:相当于MySQL中的一......
  • MogDB 使用向量化执行引擎进行调优
    MogDB使用向量化执行引擎进行调优本文出处:https://www.modb.pro/db/430318MogDB数据库支持行执行引擎和向量化执行引擎,分别对应行存表和列存表。一次一个batch,读取更多数据,节省IO。batch中记录较多,CPUcache命中率提升。Pipeline模式执行,函数调用次数少。一次处理一......
  • springboot 集成elasticsearch Ik分词
    前提是我们elasticsearch服务已经集成了IK分词,具体集成下载对应的elasticsearchIK分词插件,在es插件包下创建IK文件夹,将下载好的IK包上传上去解压后重启es1、pom引入co.elastic.clientselasticsearch-java7.16.2jakarta.jsonjakarta.json-api2.0.1org.springframew......
  • openGauss 参数调优与诊断
    参数调优与诊断可获得性本特性自openGauss1.0.0版本开始引入特性简介本功能是一款数据库集成的参数调优工具,通过结合深度强化学习和全局搜索算法等AI技术,实现在无需人工干预的情况下,获取最佳数据库参数配置。本功能不强制与数据库环境部署到一起,支持独立部署,脱离数据库安装环......
  • openGauss X_Tuner_参数调优与诊断
    X-Tuner:参数调优与诊断可获得性本特性自openGauss1.0.0版本开始引入。特性简介X-Tuner是一款数据库集成的参数调优工具,通过结合深度强化学习和全局搜索算法等AI技术,实现在无需人工干预的情况下,获取最佳数据库参数配置。本功能不强制与数据库环境部署到一起,支持独立部署,脱......
  • ElasticSearch的搜索相关操作
    1、基本介绍Elasticsearch的查询是基于JSON风格的DSL(DomainSpecificLanguage)来实现的。常见的查询类型包括:查询所有:查询出所有数据,一般测试用。例如:match_all全文检索(fulltext)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如:match、multi_match精确......
  • 二进制部署elasticsearch集群
    部署elasticsearch7.17.3版本背景:  业务有需求看evenet事件,由于etcd集群中的eventkey频繁打到200w+,对etcd集群压力非常大,每次都需要手动删除eventkey,非常耗时间,而且风险特别好,恢复时间慢等缺点。解决方案:  1,拆分etcd集群中的eventkey,在本机上创建一个新的etcd集群,......
  • Elasticsearch 8.x以上实现初始化用户密码,elasticsearch-setup-passwords interactive
    Elasticsearch8.x以上,默认自动开启x-pack验证,在首次启动时,会设置密码,当再次执行elasticsearch-setup-passwordsinteractive就会报错,提示使用elasticsearch-reset-passwords,但是用户太多,还是想要能像8.x以下一直敲回车,设置密码。今天偶然Elasticsearch报错,发现一个方法可以使用,......
  • elasticsearch esrally 性能测试实操
    目录准备数据docker测试环境准备正式测试最新在用esrally测试es的性能,今天把相关操作记录下。本人非专业测试,各位大佬请轻喷。关于esrally的文档,请移步:esrally测试esrally是个elastic官方的测试工具,可以对es进行压力测试。其运行对环境有一定要求,如python版本,JDK......