分布式搜索引擎ElasticSearch

简介: Elasticsearch是一款基于Lucene的分布式搜索引擎,它提供了一个分布式的多用户全文搜索引擎,可以处理PB级别的数据。Elasticsearch主要用于构建大型实时搜索引擎,提供了简单易用的API,支持多种数据类型的搜索,如文本、数字、日期等。

一.认识elasticsearch

1.是一款强大的开源索引,可以帮助我们从海量数据中快速找到需要的内容

二.正向索引和倒排索引

2.倒排索引是借助文档(document)和词条(term)来实现的,每条数据就是一个文档,文档id类似于表的主键id;词条就是把一句话给分开

3.倒排索引是先命中词条然后通过命中词条对应文档的id去表中查找对应的数据

4.在ES里index是表、document是一条数据、field是一个字段、Mapping是建表语句、DSL是SQL

5.使用IK分词器进行分词

6.默认分词器=standard、ik_smart分词器、ik_max_word分词器

7.添加IK分词器

8.禁用优先级比拓展优先级高

三.索引库操作

1.索引库字段数据类型常见的有两种:text(可分词的文本)、keyword(精确值,比如品牌、国家、ip)

2.analyzer要使用哪种分词器

3.properties:该字段的子字段

4.创建索引库

5.索引库名和mapping一但被创建无法修改,但可以添加字段

四.文档操作

1.文档id是跟数据库的某一条数据的id是一样的

2.全量修改=会删除旧文档,添加新文档

3.增量修改=修改指定字段词

五.RestClient操作索引库

1.根据数据库创建索引库

2.引入依赖

<dependency>

   <groupId>org.elasticsearch.client</groupId>

   <artifactId>elasticsearch-rest-high-level-client</artifactId>

</dependency>

3.在启动类初始化RestHighLevelClient

4.创建请求方式、发送请求

六.RestClient操作文档

1.在启动类初始化RestHighLevelClient

2.新增功能:查找数据库中的数据、将查找出来的数据转换为json、调用es的api文档来完成操作

3.批量导入文档:

//查询数据库所有数据

List<Hotel> list = iHotelService.list();

//创建批量对象

BulkRequest request=new BulkRequest();

for (Hotel hotel : list) {

   HotelDoc hotelDoc=new HotelDoc(hotel);

   String jsonString = JSON.toJSONString(hotelDoc);

   request.add(new IndexRequest("hotel185").id(hotelDoc.getId().toString()).source(jsonString,XContentType.JSON));

}

client.bulk(request,RequestOptions.DEFAULT);

七.DSL查询文档

1.查询所有:查询所有数据。match_all

2.全文检索查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如match、multi_match

3.精确查询:根据精确词条查找数据。例如:term--根据词条精确查询;range--根据值的范围查询

4.地理(geo)查询:根据经纬度查询。例如:geo_distance、geo_bounding_box

5.复合(compound)查询:合并查询条件。例如:bool、function_score(算分函数)

八.搜索处理结果

1.排序---sort根据query同级

2.分页

3.高亮(highlight)

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
7月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
7月前
|
存储 Linux iOS开发
Elasticsearch Enterprise 9.1.5 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.1.5 (macOS, Linux, Windows) - 分布式搜索和分析引擎
516 0
|
8月前
|
JSON 监控 Java
Elasticsearch 分布式搜索与分析引擎技术详解与实践指南
本文档全面介绍 Elasticsearch 分布式搜索与分析引擎的核心概念、架构设计和实践应用。作为基于 Lucene 的分布式搜索引擎,Elasticsearch 提供了近实时的搜索能力、强大的数据分析功能和可扩展的分布式架构。本文将深入探讨其索引机制、查询 DSL、集群管理、性能优化以及与各种应用场景的集成,帮助开发者构建高性能的搜索和分析系统。
536 0
|
10月前
|
人工智能 分布式计算 DataWorks
分布式×多模态:当ODPS为AI装上“时空穿梭”引擎
本文深入探讨了多模态数据处理的技术挑战与解决方案,重点介绍了基于阿里云ODPS的多模态数据处理平台架构与实战经验。通过Object Table与MaxFrame的结合,实现了高效的非结构化数据管理与分布式计算,显著提升了AI模型训练效率,并在工业质检、多媒体理解等场景中展现出卓越性能。
|
存储 安全 Linux
Elasticsearch Enterprise 9.0 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 9.0 (macOS, Linux, Windows) - 分布式搜索和分析引擎
481 0
|
存储 Linux iOS开发
Elasticsearch Enterprise 8.18 发布 - 分布式搜索和分析引擎
Elasticsearch Enterprise 8.18 (macOS, Linux, Windows) - 分布式搜索和分析引擎
427 0
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
2170 64
|
12月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
6038 0
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
654 5
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo