ElasticSearch简介

  • 基于Apache Lucene构建的开源搜索引擎,在此基础上进行了一些封装和简化,屏蔽了Lucene的复杂性;
  • 采用Java编写,提供简单易用的Restful API;
  • 轻松的横向扩展,可支持PB级别的结构化或非结构化数据处理。

应用场景

  • 海量数据分析引擎;
  • 站内搜索引擎;
  • 数据仓库;

::: tip

安装与部署相关

ElasticSearch在linux上安装部署: https://www.cnblogs.com/socketqiang/p/11363024.html
:::

ElasticSearch基本概念

索引 index

索引是ES存储数据的基本顶层单元目录.它好比就是关系型数据库中的数据库,是存储数据的地方。当搜索数据的时候,会直接从索引中查取,注意这里要与关系型数据的中的索引区分,他们是完全不同的概念。index的名字必须是小写,不能包含逗号、下划线或者大写字母

类型 type

type表示一类或者一种事物的抽象,在关系型数据库中我们经常将一类结构相似的数据放在一个表里,而在elasticsearch中,使用相同类型的type表示相同的一类事物,它相当于关系型数据库中的表(table),用于描述文档中的各个字段的定义。每个type都有自己的映射(mapping)或者结构定义。type的名字可以是大写或者小写,不能包含下划线或者逗号。

文档 document

document是index中的单条数据序列化成的json格式的数据,它以唯一id(_id)存储在ES中,相当于关系表的数据行,存储数据的载体,包含一个或多个存有数据的字段;

  • 字段(Field):文档的一个Key/Value对;
  • 词(Term):表示文本中的一个单词;
  • 标记(Token):表示在字段中出现的词,由该词的文本、偏移量(开始和结束)以及类型组成

Node 与 Cluster

Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。

ElasticSearch中的mapping简介

默认mapping

mappings: {
    item: {   
        properties: {
            description: {
                type: string
            }
            name: {
                type: string
            }
        }
    }
}

mapping参数

字段中的type(es数据类型)  
  • 1.text 字符串,分词,全文索引
  • 2.keyword 关键字,不分词,适合id,email等这种不分词的字段
  • 3.numeric 数字类型有integer、long、short、byte、double、float等类型
  • 4.date 时间类型
  • 5.boolean 布尔类型
  • 6.binary 接收base64编码的字符串
  • 7.rang 具体有integer_range,float_range,long_range,double_range,date_range,ip_range,可存储范围数据,如下插入