ES学习————介绍

前言

在了解Elasticsearch之前,我们应该先了解下:

  1. 什么是搜索引擎
  2. 目前有哪些主流的搜索引擎
  3. 搜索引擎搜索的质量应该如何评价

    简介

    什么是ES

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

    ES能干什么

    Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。
    可以完成的工作主要有:
  4. 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  5. 实时分析的分布式搜索引擎。
  6. 也可以作为一款分布式的数据库,支持保存大量结构化或者非结构化的数据

    ES相关性评分

    前面我们已经了解过如何评价一个搜索质量。而在es里,我们用相关性评分来评价 每一个结果和查询的相关程度,并根据相关程度对结果进行排名。当我们简单的用match来全文搜索的时候,结果中的score就是代表相关性评分。
    一般情况下,初始的评分系统已经很全面和完整,具体公式详见:
    https://www.elastic.co/guide/cn/elasticsearch/guide/cn/scoring-theory.html
    当然,我们也可以自定义评分来满足各种各样的不同情境查询条件。

    ES的优缺点和同类竞品

    目前市面上较为常用的搜索引擎有es、Solr,这两款都是基于Lucene的搜索引擎。
    搜索引擎选择: Elasticsearch与Solr这篇文章里也对两者进行简单的比较和阐述。两者之间最大的区别是相对于es,solr在建立索引时,搜索效率会大大下降,且随着数据量的增加,Solr的效率会变得很低,而Elasticsearch却没有明显的变化。
    除了上述两种方案,我们也可以直接选择使用Lucene
    Lucene 是一个 JAVA 搜索类库,es和Solr都是基于Lucene实现的,通过结合实际的需求可以定制化和更大的优化空间,更多满足各式各样的需求,但同时需要投入大量的人力物力。

参考资料:
搜索引擎选择: Elasticsearch与Solr
官方文档

坚持原创技术分享,您的支持将鼓励我继续创作!