elasticsearch
技术菜逼
这个作者很懒,什么都没留下…
展开
-
hive映射elasticsearch nested复杂数据类型,读取elasticsearch _id字段
先简单写一下,列出关键的部分,es的nested数据结构如何在hive中做映射,es-hadoop的jar包当然要包括在hive的classpath中,就不多说。这是es的索引结构,略去了不必要的内容{ "mappings": { "doc": { "properties": { "MotorVehicleID": { "type": "keyword" }, "InfoKind": { "t...原创 2020-12-11 15:33:40 · 1258 阅读 · 3 评论 -
elasticsearch集群节点重启导致分片丢失的问题
记录一下es丢失分片的问题。5.4.3版本的es。3个节点分布在三台主机上,分片设置为5分片1副本的配置。因为压力测试,需要升级节点java堆内存,从2G升级到6G。因为是测试集群,在改了jvm.options配置之后(要改es软件目录下的才生效,配置目录下的不生效),挨个重启节点,每个节点相差几秒钟的样子。好了,在我一顿操作猛如虎之后,集群起来了,皆大欢喜,继续测试。过了10来天,开发找过来...原创 2020-04-30 01:34:52 · 8631 阅读 · 2 评论 -
ElasticSearch批量导入的优化实践
最近在做es跨集群批量导入的优化工作,将自己get到的点总结一下。跨集群导入有三种方法:1,应用编程,从源集群读取,导入目标集群;这种方法的优点在于,整个导入过程的各个环节是自己编码控制的,每个环节都能做到可控,哪里有问题就可以针对性修改代码进行调优。正所谓哪里有问题点哪里。并且导出和导入是同时进行的,可以将导入程序部署在第三台机器上,充分利用各节点机器资源。但同时优点也是缺点,就是各个环...原创 2020-04-26 17:28:29 · 1513 阅读 · 0 评论 -
javax.security.auth.PrivateCredentialPermission" "org.apache.hadoop.security.Credentials" "read"
es5.4.3集群配置hdfs备份插件时出现权限错误:com.google.protobuf.ServiceException: java.security.AccessControlException: access denied ("javax.security.auth.PrivateCredentialPermission" "org.apache.hadoop.security.Cr...原创 2020-04-20 14:18:16 · 245 阅读 · 0 评论 -
elasticsearch restore并发分片数的控制
按照文档中的描述,es的snapshot/restore操作是在snapshot线程池控制的。这个线程池控制并发snapshot或者restore的线程的数量。一个shard需要绑定一个thread来进行操作。此线程池大小受3个因素影响:1,机器可用processor数量,也既cpu核数。这个默认是读取机器配置。但是可以通过参数进行配置。2,thread_pool.snapshot.max...原创 2020-04-20 11:48:26 · 532 阅读 · 0 评论 -
elasticsearch discovery&election 发现和选举过程
本文基于elasticsearch7.1版本,较新的版本可能会改变部分逻辑。首先讲发现discovery过程。当es节点启动时,或者运行过程中,当前es节点丢失与当前cluster中的master节点的连接后,就会启动discovery过程,直到重新发现一个master节点(当前节点not a master-eligible node),或者选举出一个新的master节点(当前节点是maste...原创 2019-09-26 20:22:00 · 511 阅读 · 0 评论 -
elasticsearch分片分配和路由配置
本文基于es7.3版本。集群级别的分片分配配置,主要有下面几个:cluster.routing.allocation.enable:启用或禁止特定种类分片的分配。有下面四种取值:all- (default) Allows shard allocation for all kinds of shards.允许所有种类分片的分配,包括primary和replica。默认行为。 prima...原创 2019-09-29 03:46:15 · 2668 阅读 · 0 评论 -
elasticsearch备份恢复snapshot&restore
本文基于es7.1版本。部分内容在较旧或较新版本可能不十分准确。es提供对于运行中的集群的备份恢复功能,利用此功能可以备份整个集群(open或者started状态的分片,备份不了closed的index),或者备份指定的index。备份目标存储可以是网络文件系统NFS、Amazon S3、HDFS、Azure(将来可能不支持deprecated)、以及谷歌云存储。对于不同es版本备份数据与...原创 2019-09-29 17:06:29 · 1704 阅读 · 0 评论 -
ElasticSearch Local Gateway 本地网关
es local gateway是一个功能模块,负责在整个集群重新启动时存储cluster state和shard 数据。主要作用是控制整个集群重启后的恢复时机。试想下这种场景:集群中有9个节点,假设都为master eligible 节点。那么集群重启后需要满足5个节点连接,就可以选举出master。并可以进行recovery操作(将replica copy变为primary copy并且rea...原创 2019-10-09 01:50:24 · 833 阅读 · 0 评论 -
elasticsearch mapping之一:引入mapping
mapping作为index定义的两大结构之一(另外一个是setting),被用来指定documet以及document中的field如何存储以及被索引。其又包括两大结构: Meta-field 和 properties/Fields 。其中,Meta-field包含_field_names、_ignored、_id、_index、_meta、_routing、_source、_type(在6....原创 2019-10-10 01:19:33 · 499 阅读 · 0 评论 -
elasticsearch 设置seed hosts
es集群中配置的seed hosts,通过seed hosts provider提供,provider的数据来源有集群配置文件和第三方插件提供。集群配置文件又有两种方式,一种是直接在elasticsearch.yml配置文件中通过discovery.seed_hosts参数直接指定主机:[端口]列表,称为setting-based seed hosts provider,如下面:disc...原创 2019-09-26 10:56:46 · 18059 阅读 · 0 评论 -
elasticsearch aggregations 之二 doc values & field data
本文基于elasticsearch权威指南和reference 7.1文档的阅读理解整理而成,水平有限,难免错漏。elasticsearch一个很重要的功能,就是对数据的分析,而分析就少不了对数据集的各种聚合aggregation,count、sum、avg等等,这个时候,es的主要数据结构--inverted index就起不了多大作用了,我们来看看抽象的inverted结构:这是从...原创 2019-09-26 00:45:40 · 341 阅读 · 0 评论 -
elasticsearch文档_routine字段的使用
elasticsearch中文档实际上是存储在各个shard上的,shard是一个完整的Lucene搜索引擎。index只是逻辑上的命名空间,只是在从客户端到elasticsearch服务端操作具体document的一个逻辑引用。那么当单个index有若干shard的时候,默认是通过document的_id元属性的哈希值对num_primary_shards进行取余的方式决定,此document应...原创 2019-09-12 02:41:39 · 5011 阅读 · 0 评论 -
elasticsearch读写文档--写模型
本文档基于es7.1版本。较新或交旧的版本可能在个别地方有出入。es中的每一个index,都被切分成多个shards存储,这每一个shard称之为primary shard,并且每一个shard可能没有,或者有一个或多个copy,这些个copy称之为replicate。primary shard与其对应的replicate一起合称为replication group。replication gr...原创 2019-09-12 18:15:36 · 354 阅读 · 0 评论 -
elasticsearch数据类型--join
elasticsearch是一个搜索引擎,附带了数据存储功能。相比关系数据库为关系而生而言,elasticsearch并不删除处理数据之间的关系模型。但仍然提供了对此类需求的有限支持,join和nested数据类型。尽管如此,贯穿整个elasticsearch手册都在强调的一句话是The join field shouldn’t be used like joins in a relation d...原创 2019-09-16 15:09:58 · 798 阅读 · 0 评论 -
elasticsearch数据类型--object
es中的object类型可理解为field包含field,field的分层结构。例如下面的index,在第一个层次包含了[region,manager]字段,manager内部又包含了[age,name],name本身又是一个object,包含了[first,last]。这里需要注意的是,name使用了dynamic、enabled、properties、type属性。其中,dyanmic表示此o...原创 2019-09-16 17:57:27 · 7154 阅读 · 2 评论 -
elasticsearch数据类型--nested
前面写到了object数据类型,这里来说说nested。按照官方文档的说法,nested是特殊的object类型,弥补了object对象不能单独作为整体进行检索的缺陷。为了达到这个目的,nested在es内部是作为隐藏文档存储的。下面来详细说明。先来看如何创建一个包含nested类型的index:PUT test_nested{ "settings": { "mappi...原创 2019-09-17 09:20:45 · 2098 阅读 · 0 评论 -
elasticsearch文档检索流程
这里以es多节点集群部署来做说明。单节点与之类似。基于es 7.1版本。集群模式下,对于document的检索称为 Distribute document search。在简单的三节点集群中,假设一个index有两个primary shard,每个shard有2个replicate。如下图:其中,P0,P1为两个primary shard,NODE1和NODE2上的R0为P0的两个replic...原创 2019-09-19 16:20:13 · 1036 阅读 · 0 评论 -
elasticsearch的空值处理
本文基于es7.1版本。针对空值的测试,使用了如下几种值:null、“null”、“”、[ ];测试代码太长,先说结论,对于所有类型,null、“”、[ ]均可以被索引,但是无法检索。对于部分数据类型,由于“null”不能转换为对应的类型,因此索引时会报错,但是对于keywork、text等可以索引string类型的字段,“null”被视作普通的string,可被索引与检索。不可以被直接检...原创 2019-09-19 20:10:14 · 9815 阅读 · 1 评论 -
elasticsearch shard--refresh
先放一张整体图,有一个总体、清晰的了解。elasticsearch shard的refresh发生在从下面的图一到图二的过程中:图一:图二:commit point本身是一个磁盘文件,包含了已经fsync到磁盘上的segments。in-memory buffer是内存的一块区域,用于存储上一次refresh后,下一次refresh之前的新增加(更新也是新增)的docu...原创 2019-09-22 01:58:28 · 397 阅读 · 0 评论 -
elasticsearch mapping参数--boost
此文档基于es7.1版本。boost用于影响返回结果的相关性评分,在原评分基础上*boost值。如果是2的话,就是2倍打分值,如果是0.5就是原打分的一半。测试如下:其中针对title的get的"_score" : 0.5753642,针对content的get的"_score" : 0.2876821。可以看出来是2倍值。PUT boost_index{ "mappings"...原创 2019-09-23 01:52:41 · 1421 阅读 · 0 评论 -
elasticsearch aggregations 之一:引入buckets、metrics
今天聊聊elasticsearch的聚合aggregation功能。在解释elasticsearch的时候,都喜欢将es与关系数据库做对比参照,一来大部分coder对关系数据库都有或多或少了解,基本的关系模型、select功能都清楚;二来忽略内部实现如何,就表现出来的功能而言,两者也有可比之处。将两者作对比,可以帮助es新人更好的了解、使用es。接下来就看看两者的aggregation对比如何...原创 2019-09-24 00:54:41 · 1286 阅读 · 0 评论 -
elasticsearch7.1的一些自问自答
1.问:index的shard数量,为什么是静态的,只能在索引创建时指定,而不能中途修改?答:是因为custom routing的特性造成的限制。我们知道,一个document会在索引是会被路由到哪个shard,并且在以后的update,delete,select会到哪个shard上去拿数据,都是由这个公式决定的:shard_num = hash(_routing) % num_prim...原创 2019-09-11 23:59:43 · 231 阅读 · 0 评论