ES学习笔记

ES是什么

关键词:倒排索引、REST风格API、JSON格式的文档、分片、主节点、分片副本

索引(index,类似关系数据库中的数据库)、

类型(type,类似关系数据库中的表)、

文档(Document,包含多个域,json格式,每个文档可以存储不同的域集,与mongo相似。类似关系数据库中的一个记录,即行)、

域(field,也成为字段。类似于列)

ES介绍,主推:https://blog.csdn.net/aisemi/article/details/80212836?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

ES底层原理介绍可借鉴:https://blog.csdn.net/zkyfcx/article/details/79998197

elasticsearch

简写es,es是一个高扩展、开源的全文检索分析引擎,它可以准确实时地快速存储、搜索、分析海量的数据。

什么是全文检索

全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。

ES能干什么

  • 一个线上商城系统,用户需要搜索商城上的商品。 
    在这里你可以用es存储所有的商品信息和库存信息,用户只需要输入”空调”就可以搜索到他需要搜索到的商品。
  • 一个运行的系统需要收集日志,用这些日志来分析、挖掘从而获取系统业务未来的趋势。 
    你可以用logstash(elk中的一个产品,elasticsearch/logstash/kibana)收集、转换你的日志,并将他们存储到es中。一旦数据到达es中,就你可以在里面搜索、运行聚合函数等操作来挖掘任何你感兴趣的信息。
  • 如果你有想基于大量数据(数百万甚至数十亿的数据)快速调查、分析并且要将分析结果可视化的需求。 
    你可以用es来存储你的数据,用kibana构建自定义的可视化图形、报表,为业务决策提供科学的数据依据。

可以这么认为,es是一个企业级海量数据搜索引擎,可以理解为是一个企业级的百度搜索,除了搜索之外,es还可以快速的实现聚合运算

ES特性

1、精心设计的API

ElasticSearch认为数据应该伴随在URL中,或者作为请求的主体(request body),以一种JSON格式的文档发送给服务器。如果读者用Java或者其它运行在JVM虚拟机上的语言,应该关注一下Java API,它除了是群集中内置的REST风格API外,功能与URL请求是一样的。值得一提的是在ElasticSearch内部,节点之间的通信也是用相关的Java API

linux下可用curl工具访问ES,如

curl  -XPUT http://localhost:9200/blog/article/1 '{"title": "Newversion of Elastic Search released!", "content": "...","tags":["announce", "elasticsearch", "release"] }'

索引数据方法:(1)通过索引API,如使用curl;(2)使用bulk API(通常采用HTTP协议)批量添加文档;(3)使用UDP bulk API(采用非连接的数据报协议,速度快、可靠性差)批量添加文档;(4)通过river插件,river运行在ElasticSearch集群的节点上,能够从外部系统中获取数据。

(有一点需要注意,索引数据的操作只会发生在主分片(primary shard)上,而不会发生在分片副本(Replica) 上。如果索引数据的请求发送到的节点没有合适的分片或者分片是副本,那么请求会被转发到含有主分片的节点。)

参考原文:https://blog.csdn.net/duanduanpeng/article/details/72633148

https://blog.csdn.net/zkyfcx/article/details/79998197(推荐)

 

同类比较

关系型数据库

数据库

ElasticSearch

索引

类型

文档

字段

2.ES分布式搜索,传统数据库遍历式搜索

ES支持分片和复制,从而方便水平分割和扩展,复制保证了es的高可用与高吞吐。

在ES中,当你创建一个索引(数据库)的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且独立的索引(数据库),索引可以被放置到集群中的任何节点上。分片优点:

1.允许你水平分割/扩展你的内容容量

2.允许你在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量

3.分片的分布,它的文档怎样聚合回搜索请求,完全由Elasticsearch管理

3.ES采用倒排索引,传统数据库采用B+树索引

假设一个文档(用id标识)是有许多的单词(用value标识)组成的,每个单词可能同一个文档中重复出现很多次,也可能出现在不同的文档中。

正排索引:从文档角度看其中的单词,表示每个文档都含有哪些单词,以及每个单词出现了多少次(词频)及其出现位置(相对于文档首部的偏移量)。

倒排索引:从单词角度看文档,标识每个单词分别在那些文档中出现(文档ID),以及在各自的文档中每个单词分别出现了多少次(词频)及其出现位置(相对于该文档首部的偏移量)。

简单理解,

正排索引:id ---> value

倒排索引:value ---> id

ES中为所有字段默认都建了倒排索引。

4.ES没有用户验证和权限控制

5.ES没有事务的概念,不支持回滚,误删不能恢复

6.ES免费,完全开源;传统数据库部分免费

7.结合工作举例

例如,要计算出2.38亿会员中有多少80后的已婚的上海男士。

传统数据库执行时间: 5个小时左右

ES执行时间:1分钟

此段原文:https://blog.csdn.net/PlayGrrrrr/article/details/79008124?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值