您的位置 首页 java

Java开发的分布式多用户能力的全文搜索引擎Elasticsearch简介

什么是ES:

es全称为 Elasticsearch ,是一个高度可扩展且开源的全文检索和分析引擎。它可以让您快速且近实时地存储,检索以及分析海量数据。他是用 java 编写的基于 Lucene 的一款软件。用户可以很容易的使用RESTful接口进行全文搜索和结构化搜索,当我们发现原来的数据库或系统无法满足我们的搜索需求的时候,我们可以引进es作为我们的搜索引擎来满足需求。

ES能干什么:

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会 索引 (index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。

可以完成的工作主要有:

分布式 实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

实时分析的分布式搜索引擎。

也可以作为一款分布式的数据库,支持保存大量结构化或者非结构化的数据

ES相关性评分

前面我们已经了解过如何评价一个搜索质量。而在es里,我们用相关性评分来评价 每一个结果和查询的相关程度,并根据相关程度对结果进行排名。当我们简单的用match来全文搜索的时候,结果中的score就是代表相关性评分。

一般情况下,初始的评分系统已经很全面和完整,具体公式详见:

当然,我们也可以自定义评分来满足各种各样的不同情境查询条件。

ES的优缺点和同类竞品

目前市面上较为常用的搜索引擎有es、 Solr ,这两款都是基于Lucene的搜索引擎。

在搜索引擎选择: Elasticsearch与Solr这篇文章里也对两者进行简单的比较和阐述。两者之间最大的区别是相对于es,solr在建立索引时,搜索效率会大大下降,且随着数据量的增加,Solr的效率会变得很低,而Elasticsearch却没有明显的变化。

除了上述两种方案,我们也可以直接选择使用Lucene。

Lucene 是一个 JAVA 搜索 类库 ,es和Solr都是基于Lucene实现的,通过结合实际的需求可以定制化和更大的优化空间,更多满足各式各样的需求,但同时需要投入大量的人力物力。

文章来源:智云一二三科技

文章标题:Java开发的分布式多用户能力的全文搜索引擎Elasticsearch简介

文章地址:https://www.zhihuclub.com/194558.shtml

关于作者: 智云科技

热门文章

网站地图