Elasticsearch知识整理
1:es介绍
2:全文搜索的工具有哪些
3:es的bulk的引用场景
- bulk会把将要处理的数据载入内存中,所以数据量是有限制的
- 最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载
- 一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,
- 可以在es的配置文件中修改这个值http.max_content_length: 100mb
- 在读数据与写数据之间如果有其他线程进行写操作,就会出问题,es使用版本控制才避免这种问题。
- 在修改数据的时候指定版本号,操作一次版本号加1。
- BigDesk Plugin (作者 Lukáš Vlček)
简介:监控es状态的插件,推荐!主要提供的是节点的实时状态监控,包括jvm的情况,linux的情况,elasticsearch的情况 - Elasticsearch Head Plugin (作者 Ben Birch)
简介:很方便对es进行各种操作的客户端。
4:核心概念
cluster***
shards*
recovery *
gateway*
种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen*
Transport*
和rdbms中的数据库相似
表
行
列
5:serachType
- 先把查询请求发送给集群的某一个节点
- 某个节点把最终的结果返回给客户端
的数据
给某一个节点进行汇总,排序,然后把这些数据返回给客户端
补:高亮的注意事项:
:
6:建立索引和查询的流程
without bom,一个词语一行,将自定义的文件库加入到ES_HOME/config/ik/
目录下,修改ik的配置文件,重启生效
7:为什么使用索引工具查询快
,
关键词,倒排索引是关键词 id正好相反,使用索引工具进行查询时,首先得到关键词,建立倒排索引表,关键词----索引列表包含该关键词所在的文档的id、在该文档中出现的次数、在该文档中出现的位置信息,这种由属性值确定记录的位置的方式成为倒排索引。还有
索引库中的词都是按照顺序排列
,后期根据一个关键词查询的时候,
8.setting
与mapping
作用
9:分片查询方式:
- _local:查询操作首先在本地查找,如果本地没有再到其他节点进行查找
- _primary:只在主分片中查询
- _shads:按照指定的分片进行查询,这种查询方式实现了es的极速查询
10:es集群的脑裂问题
解决方案主要有两种:
把主从节点的职责分离,设置三个储备主节点, node.master=true,node.data=false
从节点只存储数据,node.master=false,node.data=true
将储备主节点数最小设为n/2+1个
11:优化
- 适当调大系统打开的最大打开文件数,默认为1024
- 修改配置文件调整es的jvm内存的大小,根据服务器内存的大小,一般分配60%左右,默认是256M
- 分片的数量最好设置为5-20个(es中一个分片最多存20G的数据,分片数在创建索引库时就指定,而且创建后不能修改,分片数最少设置为:数据量/20G个,
如果所有分片都存满数据,需要再重新建立索引库)分片设置的过多过少都会导致检索比较慢,分片数过多会导致检索时打开比较多的文件, - 也会导致多台服务器之间的通信;分片数过少会导致单个分片索引过大,所以检索速度慢。
- 副本数多可以提升搜索能力,但是如果设置的副本数过多也会对服务器造成额外的压力,因为需要同步数据,所以设置2-3个即可
- 定时对索引进行优化,合并索引片段,一个索引片段的最好不要超过1G,将多个索引片段合并成一个大的索引片段时,不要太大,太大打开会很慢。
- 删除一条数据时不会立即删除,而是产生一个.del的文件,在检索过程中这部分数据也会参与检索,在检索过程中会判断是否删除了,如果删除了再过滤掉,这样会降低检索效率,可以定时执行curl命令进行删除或通过程序代码进行删除。
- 如果项目开始的时候需要批量入库大量数据,建议将副本数设为0,因为副本存在,数据要同步到副本,增加es的压力,索引完成后再将副本数修改过来,这样可以提高索引效率。
- 去掉mapping中的_all域,这个虽然会给查询带来方便,但是会增加索引时间和所以尺寸
- Log输出的水平默认为trace,查询超过500ms即为慢查询,就要打日志,造成cpu,内存,io负载很高,把log水平调为info或是修改配置将查询超时时间调的长一些。
12:典型的应用场景
- Id:es内置,既建立索引也存储
- Title:既建立索引也存储
- Author:不建立索引,存储
- Describe:既建立索引也存储
- Content:建立索引不存储
- Hbase的设计:
- Rowkey的设计:文章的id
- 一个列族:info
- 列限定符:title,author,describe,content
13.客户端请求过程
- 客户端(Client)发送一个请求到节点1。
- 该节点利用文档的_id字段来判断该文档属于分片0。分片0的分片拷贝(主要分片或者是副本分片)存在于所有的3个节点上。这一次,它将请求转发到了节点2。
- 节点2将文档返回给节点1,节点1随即将文档返回给客户端。
对于读请求(Read Request), - 请求节点(Requesting Node)每次都会选择一个不同的分片拷贝来实现负载均衡 -循环使用所有的分片拷贝。
- 可能存在这种情况,当一份文档正在被索引时,该文档在主要分片已经就绪了,但是还未被拷贝到其他副本分片上。
- 此时副本分片或许报告文档不存在(译注:此时有读请求来获取该文档),然而主要分片能够成功返回需要的文档
。 - 一旦索引请求返回给用户的响应是成功,那么文档在主要分片以及所有副本分片上都是可用的。
Elasticsearch知识整理的更多相关文章
- js事件(Event)知识整理
事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- 数据库知识整理<一>
关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...
- 【转载】UML类图知识整理
原文:UML类图知识整理 UML类图 UML,进阶必备专业技能,看不懂UML就会看不懂那些优秀的资料. 这里简单整理 类之间的关系 泛化关系(generalization) 泛化(generalize ...
- Linux进程管理知识整理
Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...
- js事件(Event)知识整理[转]
事件注册 平常我们绑定事件的时候用dom.onxxxx=function(){}的形式 这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄. 但很多时候我们需要绑定多个处理句柄到一个事件上 ...
- Spring Ioc知识整理
Ioc知识整理(一): IoC (Inversion of Control) 控制反转. 1.bean的别名 我们每个bean元素都有一个id属性,用于唯一标识实例化的一个类,其实name属性也可用来 ...
随机推荐
- mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法
1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller ...
- Selenium的PageFactory & PageObject 在大型项目中的应用
因为最近遇到的技术问题一直没找到可行的解决办法,一直在翻看selenium的源代码,之前写测试代码的时候就是拿来即用,写什么功能啊,就按手动的操作步骤去转换,近日看到一个文章,又去wiki上查了查,觉 ...
- for…else和while…else
当while语句配备else子句时,如果while子句内嵌的循环体在整个循环过程中没有执行break语句(循环体中没有break语句,或者循环体中有break语句但是始终未执行),那么循环过程结束后, ...
- Java设计原则—依赖倒置原则(转)
依赖倒置原则(Dependence Inversion Principle,DIP)的原始定义: 高层模块不应该依赖底层模块,两者都应该依赖其抽象: 抽象不应该依赖细节: 细节应该依赖抽象. 依赖倒置 ...
- ORA-00257: archiver error的解决方法
背景:多个用户同时做测试数据,有时候突然Oracle系统就崩溃了,然后报一个ORA-00257: archiver error. Connect internal only, until freed的 ...
- Cloudera Manager安装之时间服务器和时间客户端(二)
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- IoC控制反转与DI依赖输入
IoC (Inversion of Control)即控制反转,是面向对象编程中的一种设计原则.它把传统上由程序代码直接操控的对象的调用权交给容器,通过外部容器来实现对象组件的装配和管理. 简单来说, ...
- Stitching模块中对特征提取的封装解析(以ORB特性为例)
titching模块中对特征提取的封装解析(以ORB特性为例) OpenCV中Stitching模块(图像拼接模块)的拼接过程可以用PipeLine来进行描述,是一个比较复杂的过程.在这个过程 ...
- 《Java程序设计》实验4
20145318 <Java程序设计>实验4 实验内容 安装Android Studio 运行安卓AVD模拟器 使用Android运行出模拟手机并显示自己的学号 实验过程 安装Androi ...
- spi nor flash使用汇总
Overview SPI flash, 分为spi flash, DUAL spi flash, QUAD spi flash, 3-wire spi, 4-wire spi, 6-wire spi. ...