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属性也可用来 ...
随机推荐
- LVS-DR 配置测试
LVS Lvs体系结构 Lvs工作模式(3种) NAT-网络地址转换模式 当用户请求到达调度器时,调度器将请求报文的目标地址(即虚拟IP地址)改写成选定的Real Server地址,同时报文的目标端口 ...
- 编辑器——vscode
1.编辑器个人工作配置 // 将设置放入此文件中以覆盖默认设置 { "editor.tabSize": 2, "workbench.iconTheme": &q ...
- 12.MySQL必知必会之分组数据
本文将介绍如何分组数据,以便能汇总表内容的子集,这涉及两个新SELECT语句子句,分别是 GROUP BY 子句和HAVING子句. 1.1 创建分组 分组是在SELECT语句的GROUP BY子句中 ...
- Spark SQL慕课网日志分析(1)--系列软件(单机)安装配置使用
来源: 慕课网 Spark SQL慕课网日志分析_大数据实战 目标: spark系列软件的伪分布式的安装.配置.编译 spark的使用 系统: mac 10.13.3 /ubuntu 16.06,两个 ...
- Win32GUI代码示例
// Win32UI.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Win32UI.h" #includ ...
- python中统计计数的几种方法
以下实例展示了 count() 方法的使用方法: 1 2 3 4 5 6 # !/usr/bin/python3 T = (123, 'Google', 'Runoob', 'Taobao', 1 ...
- 20145328 《Java程序设计》第7周学习总结
20145328 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda 12.1 认识Lambda语法 Lambda 教材的引入循序渐近.深入浅出 Lambda去重 ...
- 如何使一个openwrt下的软件开机自启动
条件有三: 1.需要在软件包的Makefile中添加宏定义Package/$(package-name)/preinst和Package/$(package-name)/prerm define Pa ...
- linux下如何获取sd卡中的mbr
答:使用dd命令,示例如下: dd if=/dev/mmcblk0 of=mbr.bin bs=512 count=1 解析: bs表示指定输入输出的块大小为512个字节 count表示指定读取输入的 ...
- 感觉Google要搞事情