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属性也可用来 ...
随机推荐
- mysql不乱码的思想总结
不乱码的思想:中文环境下建议选择utf-8 1.linux服务器端的设置: 1 [root@localhost app]# cat /etc/sysconfig/i18n 2 LANG="e ...
- APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
(下面大多数工具都是开源工具,在github,码云等开源平台都能找到) "测试那点事儿”在看到360旗下的测试团队整理的关于目前APP移动端自动化相关的工具,觉得总结的很到位,对目前大多数中 ...
- flam3 ubuntu 依赖文件
http://packages.ubuntu.com/zh-cn/source/precise/flam3 » Ubuntu » 软件包 » precise (12.04LTS) » 源代码 » x1 ...
- python数据描述符
Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题苦恼的朋友提 ...
- jQuery HTML操作学习笔记
学习资料 jQuery教程 获取 1.获取.设置元素的内容 1.1获取或设置目标元素的文本内容 语法 $(selector).text(); 获取元素文本内容 $(selector).text(con ...
- Problem A. Array Factory XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016
思路: 直接二分长度不可行,因为有负数. 考虑枚举坐便删l个数,那如果可以在短时间内求出符合条件的右边最小删的数的个数,这题便可做了. 即:当左边删l个数时,要使sum[n]-sum[l]-fsum[ ...
- 20145316 《Java程序设计》 课程总结
###20145316许心远<Java学习笔记(第8版)>课程总结 ##每周读书笔记链接汇总 ▪ [第一周读书笔记](http://www.cnblogs.com/xxy745214 ...
- 多线程中sleep和wait的区别,以及多线程的实现方式及原因,定时器--Timer
1. Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即 ...
- 单元测试工具Nunit
原文链接:http://blog.csdn.net/snowshinoy/article/details/6951352 调试 附加到: nunit-agent.exe进程:
- 通过map文件了解堆栈分配(STM32、MDK5)--避免堆栈溢出
环境:STM32F103C8T6,MDK5 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞.debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看 ...