介绍

ES不是新技术,是将全文检索和数据分析、分布式整合到一起。
基于lucene开发,提供简单的restful api接口、java api接口、其他语言开发接口等。
实现了分布式的搜索引擎和分析引擎。
补充数据库在现在互联网领域中的不足,如:全文检索、同义词处理、相关度排名、复杂数据分析、海量数据近实时处理等。

相关概念

倒排索引

对数据进行分析,抽取出数据中的词条,以词条作为key,对应数据的存储位置作为value,实现索引的存储。这种索引称为倒排索引。

终于有人把Elasticsearch原理讲透了!

Near Realtime (NRT) 接近实时

近实时。有两层概念,从写入数据到可搜索数据有一个延迟(1秒左右,分析写入数据的过程);基于ES执行搜索和分析可以达到秒级别的响应。

Cluster&Node

Cluster-集群。包含多个节点,每个节点通过配置来决定属于哪一个集群(默认集群命名为“elasticsearch”)。
对于中小型应用来说,最初只有一个节点也是很正常的。
Node-节点
集群中的一个节点,节点的名字默认是随机分配的。节点名字在运维管理时很重要,
节点默认会自动加入一个命名为“elasticsearch”的集群,如果直接启动多个节点,
则自动组成一个命名为“elasticsearch”的集群。当然单节点启动也是一个集群。

Document文档

ES中的最小数据单元。一个Document就是一条数据,一般使用JSON数据结构表示。
每个Index下的Type中都可以存储多个Document。一个Document中有多个field,field就是数据字段。如:
product document
{
"product_id":1,
"product_name":"xxx",
.....
}

Index索引

包含若干相似结构的Document数据。
如:客户索引,订单索引,商品索引等。一个Index包含多个Document,也代表一类相似的或相同的Document。
如:订单索引中存放了所有的订单数据(就是所有的订单Document)

Type类型

每个索引中都可以有若干Type,Type是Index中的一个逻辑分类,同一个Type中的Document都有相同的field。
示例:订单索引,不同状态的订单包含不同的内容,如:未支付订单(自动取消时间)和已支付订单(支付时间)、已发货订单(发货时间、物流信息)等都有不同的内容。
ES6.x版本之后,type概念被弱化,一个index中只能有唯一的一个type。且在7.x版本之后,会删除type定义

shard

一个index默认10个shard,5个primary shard(主分片),5个replica shard(副本分片)。
最小的高可用配置需要2台服务器。因为ES要求primary shard和replica shard不能处于同一个节点中;

对比数据库理解

Search

  • 使用Postman测试

查看健康的状态

GET /_cat/health?v

status:green、yellow、red
green:每个索引的primary shard和replica shard都是active的
yellow:每个索引的primary shard都是active的,但部分的replica shard不是active的
red:不是所有的索引都是primary shard都是active状态的。

展示所有的索引

GET /_cat/indices?v

官方文档

官方文档

Elasticsearch的Search详解的更多相关文章

  1. Elasticsearch SQL用法详解

    Elasticsearch SQL用法详解  mp.weixin.qq.com 本文详细介绍了不同版本中Elasticsearch SQL的使用方法,总结了实际中常用的方法和操作,并给出了几个具体例子 ...

  2. ElasticSearch Java api 详解_V1.0

    /×××××××××××××××××××××××××××××××××××××××××/ Author:xxx0624 HomePage:http://www.cnblogs.com/xxx0624/ ...

  3. 【elasticsearceh】elasticsearch.yml配置文件详解

    主要内容如下: cluster.name: elasticsearch 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个 ...

  4. elasticsearch 安装配置详解

    一.安装 简单的安装与启动于前文ElasticSearch初探(一)已有讲述,这里不再重复说明. 二.启动 1.自带脚本启动 1)bin/elasticsearch,不太任何参数,默认在前端启动 2) ...

  5. Elasticsearch检索分类详解

    前言 Elasticsearch中当我们设置Mapping(分词器.字段类型)完毕后,就可以按照设定的方式导入数据. 有了数据后,我们就需要对数据进行检索操作.根据实际开发需要,往往我们需要支持包含但 ...

  6. ElasticSearch之配置文件详解

    ################################### Cluster ################################### #定义集群名称,默认是elasticse ...

  7. location.search 详解

    JS中location.search什么意思 设置或获取网页地址跟在问号后面的部分 当以get方式在url中传递了请求参数时,可以利用location的search属性提取参数的值,下面的代码把参数的 ...

  8. Elasticsearch之配置详解

    Cluster 集群名称,默认为elasticsearch: cluster.name: elasticsearch 设置一个节点的并发数量,有两种情况,一种是在初始复苏过程中: cluster.ro ...

  9. spring-boot-starter-data-elasticsearch 整合elasticsearch 5.x详解

    1.使用原因 近期公司在开发新的项目用到了elasticsearch ,因为项目框架用的spring Cloud所以依赖全用的是starter,从网上找的信息比较旧,并没有整合elasticsearc ...

随机推荐

  1. JDBC 复习4 批量执行SQL

    1使用jdbc进行批量执行SQL在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. package dbe ...

  2. TCP/IP及http协议 SOAP REST

    TCP/IP及http协议: TCP/IP协议主要解决数据如何在网络中传输, 而HTTP是应用层协议,主要解决如何包装数据 SOAP:简单对象访问协议(Simple Object Access Pro ...

  3. Go 修改字符串中的字符(中文乱码)

    问题复现:修改字符串的第一个中文 先对原字符串做切片,然后进行拼接,得到新的字符串 func ModifyString(str string) string { tempStr := str[1:] ...

  4. Spring IOC原理分析

    IOC IOC(Inversion of Control)控制反转:所谓的控制反转,就是把原先需要我们代码自己实现对象的创建和依赖,反转给容器来实现.那么必然Spring需要创建一个容器,同时需要创建 ...

  5. 简单注册表单--HTML练手项目3【Table】

    [本文为原创,转载请注明出处] 技术[HTML]   布局[Table] 步骤1  划分table布局 步骤2 填充内容 文本框+密码框+单选框+复选框+多行文本域+按钮 <input> ...

  6. 线程池工具ThreadPoolExecutor

    JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到 ...

  7. sudo命令 sudoers文件

    超级用户权限 # Host alias specification Host_Alias HA = 192.168.1.1, 192.168.1.2 # User alias specificatio ...

  8. iOS8中UIActionSheet弹出UIImagePickerController异常处理

    iOS8之后,UIActionSheet改父于UIAlertController.带来了一丢丢兼容性的问题. 比如在弹出的actionsheet中选择从相册选择图片或者拍照,之后弹出UIImagePi ...

  9. JsonObject转换失败的bug

    使用过程发现初始化失败,终于找到原因 转换的字符串必须都是字符串,不能没有双引号,否则转换失败

  10. c#模拟鼠标左键单击

    [System.Runtime.InteropServices.DllImport("user32.dll")] private static extern int mouse_e ...