Elasticsearch数据库

Elasticsearch数据库1、什么是Elasticsearch1、概念以及特点        1、Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。   2、可拓展:支持一主多从且扩容简易,只要clust…

大家好,又见面了,我是你们的朋友全栈君。

1、什么是Elasticsearch

1、概念以及特点

         1、Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。

    2、可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件。

    3、高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。

    3、采用RestfulAPI标准:通过http接口使用JSON格式进行操作数据。

    4、数据存储的最小单位是文档,本质上是一个JSON 文本:

Elasticsearch数据库

2、项目中为何使用(主搜索次分析再存储)

2.1、搜索引擎

         实际项目开发中,几乎每个系统都会有一个搜索的功能,数据量少时可以直接从主数据库中比如Mysql搜索,但当搜索做到一定程度时,比如系统数据量上了10亿、100亿条的时候,传统的关系型数据库的I/O性能和统计分析性能就难以满足用户需要了。所以很多公司都会把搜索单独做成一个独立的模块,用ElasticSearch等来实现。虽然内存缓存数据库的读写性能很高,但完全把数据放在内存中是不太现实的,比如到PB级别的数据,按照每个节点96G内存计算,在内存完全装满的数据情况下,需要的机器是:1PB=1024T=1048576G ,节点数就是1048576/96=10922个 ,再考虑到数据备份,节点数还需要翻倍,成本巨大决定了其不现实!

Elasticsearch数据库

2.2、日志分析

   Elasticsearch+ Logstash + Kibana是同一家公司开发的3个开源工具,可组合起来搭建海量日志分析平台,目前很多公司都在使用这种方式搭建日志分析平台进行大数据分析。

Elasticsearch数据库 

3、底层架构

Elasticsearch数据库

4、使用状况以及与其他搜索引擎的对比

         2013年初,GitHub抛弃了Solr,采取ElasticSearch来做PB级的搜索,包括13亿文件和1300亿行代码”。

         百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据。

Elasticsearch数据库

2、RESTFul 介绍

1、什么是RESTFul

         REST(RepresentationalState Transfer)是一种软件架构的设计风格(不是标准),通过 HTTP接口处理数据,主要用于客户端和服务器的数据交互。该风格的具体特点——在服务器端,应用程序对象、数据库记录、算法、文本、图片等都是一个实体资源,使用 URI标识,所有资源都共享统一的接口(标准的HTTP方法)比如 GET、PUT、POST 和 DELETE,在客户端和服务器之间传输数据。

Elasticsearch数据库

Elasticsearch数据库

2、CURL命令的讲解

2.1、什么是CURL

    本质就是以命令方式发送HTTP请求,可以完成比如发送表单信息、文件上传、分段下载、模拟登录等,理论上在APP或Web里能操作的通过此指令都能操作。

Elasticsearch数据库

2.2、具体应用

Elasticsearch数据库

3、Elasticsearch API文档查看

Elasticsearch数据库

3、Elasticsearch及相关插件的安装

1、安装Elasticsearch并启动服务

Elasticsearch数据库

2、安装第三方插件

Elasticsearch数据库

2.1、Head插件

         是Elasticsearch的一个集群管理工具,可以通过它来查看和搜索ES的数据,是完全由html5编写的独立网页程序。

Elasticsearch数据库

2.2、Bigdesk插件

         是Elasticsearch的一个集群监控工具,可以通过它来查看ES集群的各种状况,如cpu、内存使用情况、索引数据、搜索情况、http连接数等。

Elasticsearch数据库

2.3、Mavel插件

Elasticsearch数据库

4、倒排索引(ES具体是怎么搜索的)

1、倒排索引和正向索引

         在全文搜索里,文档数据离不开搜索,而搜索离不开索引(没有索引搜索会很低效),倒排索引(Inverted index)是全文搜索系统里最高效的索引方法和数据结构,ES的索引就是倒排索引。也称反向索引/置入索引或反向档案,用以存储一个映射:在全文搜索下某个单词在一个文档或者一组文档中的位置。

Elasticsearch数据库

2、倒排索引建立索引的具体方式

始、确定需求

         在这5份文档中根据关键字“乔布斯”搜索匹配的文档,附属要求:文档的排序,这个搜索关键字在每个匹配文档中出现的位置和次数。

Elasticsearch数据库

1、把文档进行分词(怎么分要看实际需求)

Elasticsearch数据库

2、得到单词集合和文档集合(使用ID标记)

Elasticsearch数据库

3、根据上面俩集合得到这个矩阵/数据结构

Elasticsearch数据库

4、根据上表建立索引

Elasticsearch数据库

终、实现需求了

Elasticsearch数据库

5、ES的CURD操作

1、ES的API(本次在Mevel里演示,等同head和curl)

1.1、操作索引的API

 Elasticsearch数据库

1.2、操作类型的API

Elasticsearch数据库

1.3、操作文档的API(每次仅能操作一个文档)

Elasticsearch数据库

2、ES的内置字段以及字段的类型

Elasticsearch数据库

6、批量操作文档

         上节介绍的关于《操作文档的API》都只能对单个文档进行增删改查,mget用于批量检索多个文档,bulk用以批量创建/更新/删除多个文档。

1、通过mget批量检索多个文档

Elasticsearch数据库Elasticsearch数据库

2、通过bulk批量创建/更新/删除多个文档

1、bulk的使用规范和使用案例

Elasticsearch数据库Elasticsearch数据库

2、bulk处理文档大小的最佳值

Elasticsearch数据库

7、Elasticsearch的锁机制

1、为什么要使用锁机制

Elasticsearch数据库

2、加锁的机制:悲观锁和乐观锁

         悲观锁和乐观锁是什么已经在《Mysql.docx》介绍了。

    1、其中提到对于数据库而言,悲观锁只能通过数据库本身实现,但是ES并没有提供悲观锁机制。

    2、其中也提到对于数据库而言,乐观锁是通过逻辑实现的,在ES数据库上实现乐观锁便是通过文档的默认字段_version实现的。

3、ES实现乐观锁的两种方式

         前提:两种修改文档(_update更新和put覆盖)的方式都会导致目标文档的_version自增1或者直接改为指定的。

3.1、内部版本控制

         指定的version必须要 = 文档目前的_version,否则就报error。如果符合就修改成功,并且把文档version自增1。

Elasticsearch数据库

3.2、外部版本控制

         搭配version_type=external,指定的version必须 > 文档目前的_version,否则就报error。如果符合就修改成功,并且把文档version直接变成指定的。

Elasticsearch数据库

8、Elasticsearch如何做Mapping

1、什么是mapping

         映射就是在创建索引或者先创建索引后修改的时候,预先定义字段的数据类型以及相关属性。

   如果程序员没有主动为索引创建映射,则以后在创建文档时,ES会智能的给索引建立映射,处理每个字段的数据类型和属性。

2、ES里可以为字段定义哪些数据类型和属性

Elasticsearch数据库

3、关于映射的具体操作

Elasticsearch数据库Elasticsearch数据库

9、ES查询

Elasticsearch数据库

1、基本查询

Elasticsearch数据库

1、使用q查询

Elasticsearch数据库Elasticsearch数据库Elasticsearch数据库

2、使用term系列查询

1、使用term查询

Elasticsearch数据库

2、使用terms查询

Elasticsearch数据库

3、使用match系列查询(有智能搜索的效果)

1、使用match查询

Elasticsearch数据库

2、使用match_phrase查询

Elasticsearch数据库

3、使用multi_match查询

Elasticsearch数据库

4、使用match_all查询

Elasticsearch数据库

5、使用prefix作前缀匹配查询

Elasticsearch数据库

6、使用range作区间搜索

Elasticsearch数据库

7、使用wildcard查询

Elasticsearch数据库

8、使用fuzzy进行模糊搜索(有智能搜索的效果)

Elasticsearch数据库

1、使用fuzzy查询

Elasticsearch数据库

2、使用fuzzy_like_this查询

Elasticsearch数据库

3、使用fuzzy_like_this_field查询

Elasticsearch数据库

2、组合查询和过滤查询

    当在请求中看到must(and)、should(or)、must_not(not)、filtered、filter、exists、gt、lt、missing、negative、negative_boost、_cache、constant_score、not_match_query、indices等词时,就是使用了组合查询或者过滤查询,太麻烦,不研究了。仅介绍下图这一种,使用bool也是最常用的:

Elasticsearch数据库

3、查询的辅助字段,用以处理结果集

1、使用from和size控制返回文档的数量

Elasticsearch数据库

2、使用version返回文档的_version

Elasticsearch数据库

3、使用fields返回指定字段

Elasticsearch数据库

4、使用partial_fields返回指定字段

Elasticsearch数据库

5、使用sort排序

Elasticsearch数据库

6、使用通配符,通常是用在字段名中

Elasticsearch数据库

10、ES集群管理

1、ES的数据为何是安全的

Elasticsearch数据库

2、elasticsearch.yml文件配置

Elasticsearch数据库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130213.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • html播放rtsp流,浏览器播放rtsp视频流解决方案

    html播放rtsp流,浏览器播放rtsp视频流解决方案最近项目中需要实时播放摄像头rtsp视频流,于是就专门做了些研究。而浏览器不能直接播放,只有通过插件或者转码来实现这个需求。要实现这个目的,可以采用的方案非常得多,有商业的也有开源的,这里主要列举一些开源的方案。这里的方案都是我尝试过了的,有些成功,有些没成功。但是因为每个项目情况不同,这次没成的方法,换个项目也许就能成。方案一:html5+websocket_rtsp_proxy实现视频…

    2022年10月17日
  • 开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]

    开启QQ登录保护仍被盗号——QQ安全机制全面分析[通俗易懂]1、前言周围总是有些同学QQ被盗号,攻击者盗取账号后会继续去欺骗列表里的好友,形成链式反应。危害比较大。腾讯QQ安全中心提供了登录保护机制,如图:  这是腾讯为QQ添加第二层保护,在开启登录保护后,盗号者偷走密码的情况下QQ仍然安全。即使你的账号密码不小心泄露了,盗号者仍旧无法登录你的QQ。  但是,有位同学在开启QQ登录保护的情况下依然被盗号者登录成功了。QQ登录保护的安全机制:当我们开启了“登录保护”,盗号者登录QQ输入正确的密码,即使更换IP骗过了安全检测系统,会发现仍然需要

  • 蛋白PDB文件格式[通俗易懂]

    蛋白PDB文件格式[通俗易懂]列 数据类型字段名称 定义描述1-6 Recordname”DBREF”8-11IDcode idCode 记录的ID号13 Character

  • APACHE 安装出错 configure: error: Cannot use an external APR with the bundled APR-util

    APACHE 安装出错 configure: error: Cannot use an external APR with the bundled APR-util

  • ov7725摄像头人脸识别_ov7725摄像头

    ov7725摄像头人脸识别_ov7725摄像头OV7725摄像头软件实现简单的二值化处理项目使用的摄像头型号:​ 正点原子OV7725摄像头模块,带FIFO的摄像头模块。图像二值化化的个人见解:​ 常见的图片格式:​ 黑白图片、灰度图片、彩色图片。不同的图片的格式类型主要的不同点在每个像素点需要几位的二位数来表示。黑白图片每个像素不是0就是1,0代表黑颜色,1代表白颜色。灰度图像每个像素需要一个字节表示(8位二进制)每个像素可以量化…

  • 安卓连接Mqtt服务器「建议收藏」

    安卓连接Mqtt服务器「建议收藏」学习目标:实现app与mqtt服务器连接学习内容1、下载导入jar包2、调用mqtt核心代码handler=newHandler(){@SuppressLint(“SetTextI18n”)publicvoidhandleMessage(Messagemsg){super.handleMessage(msg);switch(msg.what){

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号