一、前言

    前篇写了好像没有多少人去看,但是还是要继续,我猜想可能是很多人接触的这块比较少吧,Elasticsearch这块有很多要说的,开始吧。

二、数据库、Elasticsearch选择

    传统的数据由于采用的是B+树的索引,当数据量很大很大的时候,例如单表1Y以上的时候当我们在想做like操作的时候,这个是由于like操作会引起全表检索,这个时候非常影响我们查询的效率,当出现这种状况的时候我们就需要考虑下Elasticsearch,没错这就是一个为搜索而生的,Elasticsearch采用的是倒排索引,这里先不要明白什么是倒排索引,下一篇我会比较详细介绍的,这里你有又会问Elasticsearch这么牛逼我们为什么不把它当做持久化DB?这个问题没个人有每个人的看法,只要理由合适就可以,我认为是可以得,但是这里我们要考虑到事务这个特性,传统的数据库是支持ACID,但是在Elasticsearch是不支持的,如果说你的应用不考虑到这点,我支持你使用Elasticsearch作为DB,如果还是要考虑到这些事务的问题,那么我建议你还是将Elasticsearch考虑作为一个搜索和查询展示的工具,这个是我的一些看法,大家有不同意见可以探讨;

三、Elasticsearch介绍

     Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch是一个基于Apache Lucene的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。Wikipedia、Stack Overflow、GitHub 等都基于 Elasticsearch 来构建他们的搜索引擎。

四、Elasticsearch相关概念介绍

    集群(Cluster)

    一个集群包含一个或多个节点,用来保存全部数据,并且这些节点联合提供索引和搜索能力。集群使用唯一名称进行不同集群间的区分,默认名称是”elasticsearch”。

节点(Node)

   一个Elasticsearch运行实例,是集群的构成单元。集群中的节点,也有唯一标识的,默认在节点启动的时候会随机指定一个UUID。如果不使用默认名称,可以为其指定一个名称,当想要加入某个集群的时候也必须要指定集群的名称;接下来我们还要介绍下节点的类型:

候选主节点(Master-eligible node)

一个节点启动后,就会使用Zen Discovery机制去寻找集群中的其他节点,并与之建立连接。集群中会从候选主节点中选举出一个主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。正常情况下,一个集群中只有一个选举出来的主节点,当主节点由于网络或者负载过大停止响应,此时就需要重新选举主节点,这时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致,称之为脑裂现象。这也就是为什么候选主节点要为单数的情况的原因;这里我建议候选主节点不要存放数据,配置如下:

node.master = true
node.data = false

数据节点(Data node)

数据节点主要存放索引相关数据的分片,负责数据的存储和相关具体操作,比如CRUD、搜索、聚合等。

node.master = false
node.data = true

主要介绍这来两种,剩下的大家参考官方文档

索引(index)

   索引就是相当于Mysql里的Database,存储文档结构相同的类型的集合;

文档(documnet)

   文档是索引的基础信息单元,相当于Mysql中的行,文档与JSON的形式表现,

Document MetaData(元数据)

1._index:文档所在的索引名,多索引查询时,有时候只需要在特地索引名上进行查询,_index字段提供了便利。_index是一个虚拟字段,不会真的加到Lucene索引中。

2._type:文档所在的类型名,可以根据_type进行查询、聚合、脚本和排序。

3._id: 文档唯一 id;

4._uid: 组合id,由_type 和_id 组成;

5._source:文档的原始Json数据,可以从这里获取每个字段的内容。默认_source字段是开启的,也可以关闭:

6._all: 字段拼接在一起,将所有的字段用空格分开,_all字段会被解析和索引,但是不存储。当你只想返回包含某个关键字的文档但是不明确地搜某个字段的时候就需要使用_all字段。 默认禁用;

7._parent:指定同一索引中文档的父子关系;

8._routing:_routing值是文档的_id或者_parent,通过_routing参数可以设置自定义路由;

类型(type)

   索引中可以定义一种或多种类型。类型是索引的一个逻辑上的分类;

字段(field)

   字段是Elasticsearch里面最小的单元,相当于Mysql的列,类似于JSON中的一个键,字段类型:

字符串: text keyword(不分词);

数值类型: long integer short(-32,768至32768) byte(-128至127) double float half_float(16位半精度) scaled_float缩放类型的的浮点数(比如价格只需要精确到分,price为88.88的字段缩放因子为100,存起来就是8888);

布尔型: boolean;

日期: date;

二进制: binary;

范围类型: integer_range float_range long_range double_range date_range;

分片(shards)

   Elasticsearch将索引分成若干份,默认是5个分片,每个部分是一个分片,每个分片存在不同节点上,一个节点不能存在相同的分片,每个文档通过文档id进行Hash决定放到那个节点上,每个分片都是一个独立的Lucene实例;

 副本(replicas)

索引的一份或者多份拷贝,默认是1份,主要作用是容灾作用,防止分片丢失后,副本分片会成为主分片,保证数据不会丢失,另外提升查询性能;

五、下节预告

    下次一篇介绍索引的创建、查询原理、分词器等,欢迎点赞,欢迎加群438836709,欢迎关注公众号:

Elastic Stack-Elasticsearch介绍的更多相关文章

  1. ES 集中式日志分析平台 Elastic Stack(介绍)

    一.ELK 介绍 ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析和可视化. 最近查看 ELK 官方网站,发现新一代的日志采集器 File ...

  2. 集中式日志分析平台 Elastic Stack(介绍)

    一.ELK 介绍 二.ELK的几种常见架构 >>ELK 介绍<< ELK 构建在开源基础之上,让您能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地对数据进行搜索.分析 ...

  3. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

  4. Elastic Stack之ElasticSearch分布式集群yum方式搭建

    Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...

  5. Elastic Stack核心产品介绍-Elasticsearch、Logstash和Kibana

    Elastic Stack 是一系列开源产品的合集,包括 Elasticsearch.Kibana.Logstash 以及 Beats 等等,能够安全可靠地获取任何来源.任何格式的数据,并且能够实时地 ...

  6. 浅尝 Elastic Stack (一) Elasticsearch、Kibana、Beats 安装

    Elastic Stack 包括 Elasticsearch.Kibana.Beats 和 Logstash,也称为 ELK Stack.能够安全可靠地获取任何来源.任何格式的数据,然后实时地对数据进 ...

  7. Elastic Stack(ElasticSearch 、 Kibana 和 Logstash) 实现日志的自动采集、搜索和分析

    Elastic Stack 包括 Elasticsearch.Kibana.Beats 和 Logstash(也称为 ELK Stack).能够安全可靠地获取任何来源.任何格式的数据,然后实时地对数据 ...

  8. ELK stack elasticsearch/logstash/kibana 关系和介绍

    ELK stack elasticsearch 后续简称ES logstack 简称LS kibana 简称K 日志分析利器 elasticsearch 是索引集群系统 logstash 是日志归集集 ...

  9. Elastic Stack-Elasticsearch使用介绍(三)

    一.前言     上一篇说了这篇要讲解Search机制,但是在这个之前我们要明白下文件是怎么存储的,我们先来讲文件的存储然后再来探究机制: 二.文档存储 之前说过文档是存储在分片上的,这里要思考一个问 ...

  10. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

随机推荐

  1. kubernetes系列06—kubernetes资源清单定义入门

    本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...

  2. #7 找出数组中第k小的数

    「HW面试题」 [题目] 给定一个整数数组,如何快速地求出该数组中第k小的数.假如数组为[4,0,1,0,2,3],那么第三小的元素是1 [题目分析] 这道题涉及整数列表排序问题,直接使用sort方法 ...

  3. Oracle最新的Sql笔试题及答案

    部门表(SM_DEPT) 字段名称 数据类型 是否主键 注释 DEPT_ID NUMBER Y 部门ID PARENT_DEPARTMENT_ID NUMBER N 上级部门 DEPARTMENT_N ...

  4. Spark框架详解

    一.引言 作者:Albert陈凯链接:https://www.jianshu.com/p/f3181afec605來源:简书 Introduction 本文主要讨论 Apache Spark 的设计与 ...

  5. static 静态与非静态的区别

    静态属性是共享一块内存空间.实例的是各自独享一块内存空间. 比如同一个name属性.如果是实例成员.那么你每创建了一个对象.赋给name值.假如创建了2个对象.第一个赋值张三.第2个赋值李四.它们就分 ...

  6. [MySQL] 索引中的b树索引

    1.索引如果没有特别指明类型,一般是说b树索引,b树索引使用b树数据结构存储数据,实际上很多存储引擎使用的是b+树,每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历 2.底层的 ...

  7. [LeetCode] 1. Two Sum 两数之和

    Part 1. 题目描述 (easy) Given an array of integers, return indices of the two numbers such that they add ...

  8. Spring boot入门(一):快速搭建Spring boot项目

    (一)Spring boot介绍 本部分摘自:https://www.zhihu.com/question/64671972/answer/223383505 Spring Boot是由Pivotal ...

  9. 美团技术沙龙01 - 58到家服务的订单调度&数据分析技术

    1. 2015.4.15 到家服务的订单调度&数据分析技术 58到家· 黄海斌 @xemoaya 2.agenda • 58到家介绍 • 订单管理系统介绍 • 数据分析技术的应用 3.2015 ...

  10. android.database.sqlite.SQLiteException: no such column: aaa (code 1): , while compiling: DELETE FROM users WHERE user_name=aaa解决办法

    在写安卓登录注册时注销按钮闪退发现: 这是因为此处错误: 因为用户名为字符串,不是整型,数据库查询要引号,少了引号查询不了,导致闪退 解决后成功运行 正确用法: 下次谨记,细节决定成败呀!