`
weitao1026
  • 浏览: 1061298 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ElasticSearch实现全文检索

 
阅读更多

一、ElasticSearch是什么?

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便,零配置和完全免费。

我们先说说ES的基本概念。

1、索引(Index)

ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合。类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库,或者一个数据存储方案(schema)。

索引由其名称(必须为全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。一个ES集群中可以按需创建任意数目的索引。

2、类型(Type)

类型是索引内部的逻辑分区(category/partition),然而其意义完全取决于用户需求。因此,一个索引内部可定义一个或多个类型(type)。一般来说,类型就是为那些拥有相同的域的文档做的预定义。

例如,在索引中,可以定义一个用于存储用户数据的类型,一个存储日志数据的类型,以及一个存储评论数据的类型。类比传统的关系型数据库领域来说,类型相当于“表”。

3、文档(Document)

文档是Lucene索引和搜索的原子单位,它是包含了一个或多个域的容器,基于JSON格式进行表示。

文档由一个或多个域组成,每个域拥有一个名字及一个或多个值,有多个值的域通常称为“多值域”。每个文档可以存储不同的域集,但同一类型下的文档至应该有某种程度上的相似之处。

4、映射(Mapping)

ES中,所有的文档在存储之前都要首先进行分析。用户可根据需要定义如何将文本分割成token、哪些token应该被过滤掉,以及哪些文本需要进行额外处理等。

另外,ES还提供了额外功能,例如将域中的内容按需排序。事实上,ES也能自动根据其值确定域的类型。

5、集群(Cluster)

ES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。

多节点组成的集群拥有冗余能力,它可以在一个或几个节点出现故障时保证服务的整体可用性。

集群靠其独有的名称进行标识,默认名称为“elasticsearch”。节点靠其集群名称来决定加入哪个ES集群,一个节点只能属一个集群。

如果不考虑冗余能力等特性,仅有一个节点的ES集群一样可以实现所有的存储及搜索功能。

6、节点(Node)

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。

类似于集群,节点靠其名称进行标识,默认为启动时自动生成的随机Marvel字符名称。

用户可以按需要自定义任何希望使用的名称,但出于管理的目的,此名称应该尽可能有较好的识别性。

节点通过为其配置的ES集群名称确定其所要加入的集群。

7、分片(Shard)和副本(Replica)

ES的“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。

每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为5个。

ES集群可由多个节点组成,各Shard分布式地存储于这些节点上。

ES可自动在节点间按需要移动shard,例如增加节点或节点故障时。简而言之,分片实现了集群的分布式存储,而副本实现了其分布式处理及冗余功能。

OK,上面把ES相关的基本概念及原理大致说明了下,那么ES到底是怎么实现全文检索的呢?

Elasticsearch实现全文检索,首先要确定分词器,ES默认有很多分词器,可参考官方文档。了解分词器主要是怎么实现的。

一般中文分词器使用第三方的ik分词器、mmsegf分词器和paoding分词器,最初可能构建于lucene,后来移植于ES。目前我们在最新版的ES中,使用的是IK分词。

安装ik分词器到elasticsearch很简单,它有个插件目录analysis-ik,和一个配置目录ik, 分别拷贝到plugins和conf目录就可以了。

当你有大量的文本数据时,ES均会将其进行分词并将这些词语保存在索引中,当输入关键词进行查询时,索引就会起到作用,查找对应的相同的查询词,从而实现全文检索

分享到:
评论

相关推荐

    全文检索使用ElasticSearch实现全文检索的详细说明和实践探索

    ### 使用ElasticSearch实现全文检索的关键技术点及实践探索 #### 一、ElasticSearch简介与应用场景 ElasticSearch是一款基于Lucene的分布式搜索引擎,它提供了高性能、高扩展性及实时性的全文检索功能。在软件系统...

    使用ES全文检索.docx

    - **定制化查询**:利用Elasticsearch提供的RESTful API或者Spring Data Elasticsearch提供的API来实现更复杂的查询逻辑,如全文检索。 - **分词器配置**:通过`analysis-ik`插件集成IK分词器,支持中文分词,提高...

    springboot+es实现对word,pdf,txt等文件的非结构化数据全文内容检索

    本教程将详细介绍如何利用Spring Boot集成Elasticsearch 7.9.1及Kibana来实现对这些文件的全文内容检索。 首先,我们需要理解Elasticsearch的核心概念。Elasticsearch是一个开源的分布式搜索引擎,以它的高可扩展性...

    Elasticsearch全文检索

    在` ESDemo `项目中,你可以找到上述操作的具体实现代码,这将帮助你更深入地理解如何在Spring Boot应用中整合和使用Elasticsearch进行全文检索。通过学习和实践,你将能够熟练地运用Elasticsearch来解决大数据的...

    基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现.zip

    本项目以"基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现"为主题,旨在利用先进的大数据技术和全文检索引擎,为农业生产提供高效、精准的信息服务。 Elasticsearch是一款开源的搜索引擎,基于Lucene...

    springboot集成ES实现磁盘文件全文检索的示例代码

    Springboot集成ES实现磁盘文件全文检索的示例代码 本资源主要介绍了使用Springboot集成Elasticsearch(ES)实现磁盘文件全文检索的示例代码。该示例代码详细介绍了如何使用ES实现文档的索引和搜索,并提供了完整的...

    elasticsearch高亮全文检索demo

    通过以上步骤,你可以在 Elasticsearch 6.x 中实现一个高亮全文检索的功能。这个 Demo 是了解和学习 Elasticsearch 搜索和分析能力的一个良好起点。继续探索和实践,你会发现更多 Elasticsearch 强大的特性和用法,...

    人工智能-项目实践-检索引擎-基于Java8的SSM+Elasticsearch全文检索的个人博客系统

    检索引擎-基于Java8的SSM+Elasticsearch全文检索的个人博客系统”的项目中,开发者构建了一个集成了人工智能技术的个人博客系统,它利用了现代搜索引擎技术,特别是Elasticsearch,来实现高效的全文检索功能。...

    基于Java8的SSM+Elasticsearch全文检索的个人博客系统.zip

    Elasticsearch是一款高性能的开源搜索引擎,特别适合进行全文检索。它基于Lucene库,但提供了更高级别的API和集群管理功能。在博客系统中,Elasticsearch可以存储和索引博客文章内容,以便快速地进行关键词搜索。 ...

    java连接elasticsearch将搜索结果高亮显示并分页。

    java连接elasticsearch实现全文检索,并且高亮显示结果,实现分页。项目基于elasticsearch5.6.1可根据自己实际情况调整版本。最近项目需要所以学习了一下,项目很简单可以根据你的实际情况更改接口。我本地的搜索是...

    Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo

    Elasticsearch 是一个高性能的全文搜索引擎,广泛应用于数据检索、日志分析等领域。在实际应用中,用户输入的检索词往往可能存在拼写错误、不完整或者使用了同义词等情况,为了提高用户体验和搜索准确性,Elastic...

    springboot-elasticsearch代码实现

    接下来,**Elasticsearch**是一个分布式、RESTful风格的搜索和数据分析引擎,适用于全文检索、结构化检索、分析等多种场景。Elasticsearch的核心概念包括索引(Index)、类型(Type)、文档(Document)和节点(Node...

    人工智能-项目实践-信息检索-基于腾讯云的网盘系统,支持目录树,全文检索,在线预览

    基于ElasticSearch实现全文检索功能 整体架构 如图所示,所有的数据最终都会落到腾讯云的对象存储中,本地文件服务器会保存文件到用户的映射,分布式搜索服务会通过云存储下载文件,建立索引,文件预览模块也会从云...

    基于ElasticSearch全文检索的农业地理信息大数据平台设计与实现.pdf

    针对现有农业大数据平台存在的问题,如地理要素纳入不足、研究尺度受限以及搜索功能薄弱等,本文提出了一种基于ElasticSearch全文检索技术的农业地理信息大数据平台的设计与实现方案。 首先,目前农业大数据平台...

    elasticsearch5控制全文检索结果的精确度

    ### Elasticsearch 5 控制全文检索结果的精确度 在Elasticsearch中,为了提升全文检索的质量,用户常常需要对检索结果的精确度进行控制。本文将详细介绍如何通过不同的查询方式来实现这一目标。 #### 一、增加标题...

    es客户端工具,便捷操作es全文检索工具的增删改查

    Elasticsearch(简称ES)是一种强大的开源搜索引擎,广泛应用于大数据分析和全文检索领域。作为Big Data解决方案的一部分,它以其高效、灵活和可扩展性而闻名。本文将深入探讨如何使用客户端工具来便捷地进行ES的增...

    ElasticSearch6.6全文检索.pdf

    - **电子商务搜索**:对于电商网站而言,ElasticSearch能够提供高性能的全文搜索功能,帮助用户快速找到所需商品。 ### 结论 ElasticSearch凭借其出色的分布式特性、接近实时的搜索能力、简便的数据持久化方式以及...

    Lucene实现全文检索

    **标题:“Lucene实现全文检索”** 在信息技术领域,全文检索是一种从大量文本数据中查找相关信息的关键技术。Apache Lucene是Java开发的一款开源全文搜索引擎库,它为开发者提供了构建高效、可扩展的搜索功能的...

    Elasticsearch in Action 全文检索

    **Elasticsearch in Action 全文检索** Elasticsearch 是一个强大的开源全文搜索引擎,由Java编写,基于Apache Lucene库。它设计用于分布式、实时、容错,旨在提供快速、可扩展的数据搜索和分析能力。在《Elastic...

    全文检索详细设计文档.docx

    在数据处理方面,结构化数据如Oracle数据库中的数据,通过Logstash导入到Elasticsearch,实现检索。半结构化数据如Redis中的数据,同样可以通过Elasticsearch进行检索。非结构化数据如Word文档、PDF、CSV、Excel等,...

Global site tag (gtag.js) - Google Analytics