一、ES概述

Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。 能够达到实时搜索,稳定,可靠,快速,安装使用方便。 客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。
下载地址:https://www.elastic.co/cn/start

二、ES与lucene的区别 Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框 架), 但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用 中,并且Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它 是如何工作的。lucene有很多缺陷,es并不存在。

  • 只能在Java项目中使用,并且要以jar包的方式直接集成项目中
  • 使用非常复杂-创建索引和搜索索引代码繁杂
  • 不支持集群环境-索引数据不同步(不支持大型项目)
  • 索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用硬 盘.共用空间少.

    三、es与solr对比

  • 单纯对已有数据进行搜索时,solr更快;但是实时简历索引时,solr会产生io阻塞,查询性能较差。而es不会

  • solr利用zk进行分布式管理,而es自身带有分布式协调管理功能。
  • solr支持更多的数据格式,如json、xml、csv等,而es仅支持json文件格式
  • solr在传统的搜索应用中表现好于es,但在处理实时搜索应用时效率明显低于es。

    四、全文检索&倒排索引 全文检索是指:通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单 词在文本中的位置、以及出现的次数,用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位 置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内 容读取出来
    image.png

    五、ES核心概念

    索引index
    一个索引就是一个拥有几分相似特征的文档集合,如订单索引、用户索引。一个索引由一个名称来标识(全部小写字母)。

映射mapping
es中的映射(mapping)用来定义一个文档,mapping在处理数据的方式和规则方面做了一些限制,如字段的类型、默认值、分词器、是否被索引等

字段Field
相当于数据表中的字段|列

字段类型Type
每一个字段都应该有一个对应的类型,例如:text、keyword、byte等

文档document
一个文档是一个可被索引的基础信息单元,类似一条记录,文档以json格式来表示。

分片和副本
分片 - 把一个索引拆分成多份,这些份就叫做分片,当创建索引时可以指定分片的数量,每个分片本身也是一个功能完善且独立的索引。这个索引可以放在集群中的任何节点上。
副本 - 分片的备份就是副本,提供故障转移的基础