elasticsearch
文章平均质量分 91
梦回从前
只要是光一定会灿烂的
展开
-
磨刀不误砍柴工—ElasticSearch的schema详解
schema即元数据,自从数据库诞生的那一天,这个东西就作为数据库最重要的组成部分而出现了。schema就如同现实世界中的配方或者图纸,被数据库用来生产和管理数据。由于RDS的快速发展以及普及,schema已经成为数据库的标配以及重要的设计部分。好的schema设计以及成为了一套好的数据库系统不可或缺的部分。围绕schema的各种原则和规范也应运而生,如著名的数据库三大范式,都是为了帮助数据库设计者和使用者能更高效的使用和维护数据库。彼时,将schema比喻成是一个数据库的灵魂都不为过。但是,随着NOSQL原创 2022-06-28 14:26:32 · 2370 阅读 · 0 评论 -
elasticsearch的硬盘存储表现真的惨不忍睹吗?其实没那么糟糕!
ElasticSearch在当今NOSQL中也算独树一帜的存在了,借助于强大的全文搜索能力以及本身具备的多维度搜索以及聚合能力,再加上母公司Elastic公司的良好运作以及ELK体系的普及,使得ElasticSearch在很多场景下都是NOSQL不二的选择。但是所谓人红是非多,再加上NOSQL数据库都有自己的优缺点和适用场景,没办法做到One Stack to Rule Them All,所以ElasticSearch的很多缺点也同样会被大家拿到台面上审视和批评。在这其中除了跨表无法join查询之外,最大的原创 2022-06-27 15:06:58 · 1161 阅读 · 0 评论 -
Elasticsearch这几个很常见却很容易答错的问题,你都能答对吗?
前言elasticsearch发展至今,已经发展到7.X版本了,而其中的小版本更是不胜枚举。而每个版本的发布就会带来新的特性的加入以及旧的特性的修改,这就造成了elasticsearch的配置和使用方法不能一概而论。在这个背景下,很多过时的使用方法以及配置在新版本就不再适用了;另外很多大家在其他NOSQL上习以为常的操作或者想法,也被平行挪到了elasticsearch上,这就造成了很多的谣言以及留言,本文就针对几个比较常见的问题进行下澄清,帮助大家去伪存真,更好的理解和使用elasticsearc原创 2022-04-29 14:24:53 · 3008 阅读 · 0 评论 -
数据在Elasticsearch的完整读写流程,掌握到这个程度面试以及生产环境差不多就够用了
前言看到标题以后大家有些人可能感觉有点小题大做,毕竟cilent端几行代码就能解决的问题,没必要兴师动众的来仔细讲一下。其实如果你仅仅想使用一下elasticsearch的功能,并不追求性能以及高可用性,那么这么想无可厚非。但是如果想在生产环境下使用elasticsearch,尤其是高并发高吞吐量的场景下,那么性能优化和高可用性就不可或缺了,要做到上面两点那么数据读写这两个操作的优化是必不可少的。古语有云:“工欲善其事,必先利其器”。想优化这两个操作,必须先了解这两个操作的原理。曾经有一个大神说原创 2021-07-22 10:08:14 · 1516 阅读 · 2 评论 -
elasticsearch开启x-pack后使用curl访问集群样例-亲测可用
标准访问elasticsearch的方式kibana正常情况下,使用kibana访问elasticsearch是最佳的选择,界面化操作加上界面化的显示,能将elasticsearch管理的井井有条,所以有kibana的话直接选kibanacurl刚才说了正常情况,如果某些非正常情况,包含但不限于系统使用客户的共用集群,权限控制,在这些情况下,可能无法访问kibana,这个时候只能使用curl来进行访问了,标准的语句如下:curl -XGET 172.16.43.102:9200/_ca原创 2021-04-08 17:40:29 · 1067 阅读 · 1 评论 -
一文理清elasticsearch启动x-pack后的登录验证配置以及客户端代码的适配
前言 说起x-pack这个组件,不是什么新鲜的功能,其实在elasticsearch早期版本就已经有了,而且x-pack在功能对于elasticsearch的安全性来说也毋庸置疑,但是俗话说得好,一分钱难倒英雄汉,更何况花销的单位可能是数万甚至更多,所以早期在中国并没有被大规模普及,能用的要么是财大气粗的金融、银行以及运营商等重量级客户;要么是通过“其他渠道”偷偷使用的中小客户。“菜谱哥”可能注意到完全收费对于x-pack的发展起到了很大的制约,而且收入可能也没有预期那么理想,所以从elas...原创 2021-03-30 17:29:26 · 4198 阅读 · 2 评论 -
一文详解elasticsearch的索引生命周期管理—rollover+curator—ilm
前言 随着大数据和人工智能行业的发展与成熟,各个行业各种业务场景下OLAP(联机分析处理)的需求越来越强;人工智能中的NLP(自然语言识别)的发展为文本分析以及全文检索带上了一个新的台阶,在这种背景下,作为上述两种需求的集大成者的elasticsearch的应用越来越广泛,elasticsearch中存储的数据也越来越多,在elasticsearch给我们带来很多便利的同时也带来了很多问题:查询数据越来越慢,聚合的速度慢的离谱,聚合的数据量大一些的话,可能出现超时失败,甚至OOM 磁...原创 2021-03-04 16:31:04 · 2239 阅读 · 2 评论 -
一文详解Elasticsearch中的Node角色以及使用方法
前言说到elasticsearch,大家第一反应就是他是一款NOSQL数据库,既然是NOSQL数据库,则生产环境上必定是集群,由很多台服务器共同搭建而成。按照常理,分布式集群从搭建模式上分为中心化模式,即有主节点和从节点之分,即部分节点有成为主节点的资格,其余节点则只能是从节点,如Hadoop,HBase;另外一种模式是去中心化模式,即所有节点的角色都一样,任何一个节点都有可能成为主节点,如Zookeeper,Cassandra,而Elasticsearch显然属于前者,每个节点都有属于自己的角色,说到原创 2021-02-22 16:54:49 · 5231 阅读 · 0 评论 -
一文详解elasticsearch的search type属性
Search的面临的问题:elasticsearch从出现的那天起就为分布式而生,分布式是把双刃剑,分布式强大的可扩展性和高效的性能再给elasticsearch带来强大高效的处理能力的同时,也带来了分布式常规需要解决的问题,即数据都需要在各个节点或者实例分散计算(分布式典型的移动计算而非移动数据的思想),这种特点在某些场景下可能会带来一些相对麻烦的处理。elasticsearch的search分两步:1、将search请求发送到各个节点的各个分片,在每个分片上进行计算,这个过程被称为Scatt原创 2021-01-25 17:58:22 · 4452 阅读 · 2 评论 -
elasticsearch restful client 详细例子及源码封装(包含rest-high-level-api和rest-low-level-api)
工具介绍:es-rest-client,github地址:es-rest-client从java transport client转化成java restful client的转换器,对restful client进行了部分封装,最大程度减少业务代码适配带来的额外工作量,部分分支做了跨es大版本的兼容分支说明:main与1.0.0-restful-RELEASE_7.9.0都是基于elasticsearch7.9.0的restful client进行开发的,适用于访问7.X的elast.原创 2021-01-22 10:21:53 · 660 阅读 · 0 评论 -
一文读懂elasticsearch版本升级type的变化
type属性的由来从Elasticsearch的第一个发布版本以来,每一个document都被存储在一个单独的index里,并被赋予了一个type,一个mapping代表一个type相关的数据类型以及索引类型。例如,一个twitter索引可能有一个user类型和tweet类型。每种type都有他自己的字段,所以user类型可能有一个full_name字段,一个user_name字段和一个email字段,而一个tweet类型可能有一个content字段,一个tweet_at字段,和user类型一样原创 2021-01-19 19:10:39 · 2490 阅读 · 0 评论 -
一文讲解Elasticsearch java restful api 跨版本兼容解决方案
需求来源之前的文章elasticsearch&kibana从6.0升级到7.9完整过程记录已经已经介绍了该需求的来源,也已经将elasticsearch的server端从6.0.0升级到了7.9.0,server端的问题解决了,接下来就是client端的问题了,怎么解决下面的问题:之前6.0.0版本使用的是elasticsearch的JAVA api,这个版本的额API在7.X版本已经变成deprecated状态,并会在8.0版本被移除,所以需要将JAVA api转化为JAVA restfu原创 2021-01-12 11:07:17 · 4382 阅读 · 3 评论 -
elasticsearch&kibana从6.0升级到7.9完整过程记录
需求来源 公司当前使用的elasticsearch&kibana是6.0.0版本,这已经是快三年前的古老版本了,最新的7.9.X,出于性能上的提升以及漏洞的修复(客户爸爸对于漏洞扫描的结果表示了深切的担忧-_-!),所以近期将elasticsearch&kibana升级提上日程,由于我们公司是elasticsearch&kibana的重度用户,而且绝大多数有价值的数据都存在elasticsearch中,所以就先在一个单机版本的elasticsearch上进行试验填坑...原创 2020-10-30 18:53:52 · 3152 阅读 · 0 评论 -
elasticsearch中match、match_phrase、query_string和term的区别
一)text字段和keyword字段的区别以下给出一个例子:首先建立一个索引和类型,引入一个keywork的字段:PUT my_index{ "mappings": { "products": { "properties": { "name": { "type": "keyword" } } } }}然后查询是否有索引:GET _cluster/state可以看到已经创建转载 2020-07-03 15:08:22 · 2685 阅读 · 0 评论 -
Elasticsearch按天生成和删除index脚本
首先声明可以使用curator管理索引,这样大多数情况下来说会更安全更合理,也是官方推荐的。 但是如果是按天建索引,且每天的数据量大体差别不大,且可以按天滚动索引,则可以使用脚本来简单粗暴的自动化管理,这对于我这个懒人来说很有诱惑力,大体的思路就是使用脚本通过elasticsearch的restful接口来执行新建和删除指定日期的索引,然后通过linux的crontab在业务低峰期如半夜11点55分来定时执行脚本,废话不说,上脚本:#!/bin/bashdate2...原创 2020-06-30 16:02:48 · 979 阅读 · 0 评论 -
ElasticSearch内存详解
On Heap&&Off Heap Elasticsearch内存分为on heap以及off heap两部分。Elasticsearch能控制的是On Heap内存部分,这部分由JVM管理;Off Heap由Lucene管理,负责缓存倒排索引数据空间(Segment Memory)。On HeapIndexing Buffer索引写入缓冲区,用于存储新写入的文档,当其被填满时,缓冲区中的文档被写入磁盘中的 segments 中。节点上所有 shard 共享。这部分空...原创 2020-06-24 20:47:51 · 4804 阅读 · 5 评论 -
Elasticsearch配置优化方案最终完整版
在 ES 的默认设置下,是综合考虑数据可靠性、搜索实时性、写入速度等因素的。当离开默认设置,追求某一项高效率的时候,就需要根据实际的业务场景进行优化,接下来将以Elasticsearch6.X作为基准从写入速度优化、搜索速度优化以及磁盘使用量优化三个方面进行配置优化方案的设计:写入速度优化:传送门搜索速度优化:传送门磁盘使用量优化:传送门...原创 2020-06-04 19:48:46 · 1976 阅读 · 0 评论 -
elasticsearch磁盘使用量优化
优化磁盘使用量与建立索引时的映射参数和索引元数据字段密切相关,在介绍具体的优化措施之前,我们先介绍这两方面的基础知识。元数据字段_source:原始的JSON文档数据。 _all:索引所有其他字段值的一种通用字段,这个字段中包含了所有其他字段的值。允许在搜索的时候不指定特定的字段名,意味着“从全部字段中搜索”,例如:http://localhost:9200/website/_search?q=keyword_all字段是一个全文字段,有自己的分析器。从ES 6.0开始该字段被禁用原创 2020-06-04 19:44:13 · 3928 阅读 · 0 评论 -
elasticsearch搜索速度优化
预留足够的offheap内存在一般情况下,应用程序的读写都会被操作系统“cache”(除了direct方式),cache保存在系统物理内存中(线上应该禁用swap),命中cache可以降低对磁盘的直接访问频率。搜索很依赖对系统 cache 的命中,如果某个请求需要从磁盘读取数据,则一定会产生相对较高的延迟。在Elasticsearch中,使用的内存分为onheap以及offheap部分,onheap部分暂时不说了,回头我这边单独使用一篇文章介绍Elasticsearch的内存模型,这里仅说一下Ela原创 2020-06-04 19:38:34 · 1919 阅读 · 0 评论 -
elasticsearch写入速度优化
追求极致的写入速度时,很多是以牺牲可靠性和搜索实时性为代价的。有时候,业务上对数据可靠性和搜索实时性要求并不高,反而对写入速度要求很高,此时可以调整一些策略,最大化写入速度 如果是集群首次批量导入数据,则可以将副本数设置为0,导入完毕再将副本数调整回去,这样副分片只需要复制,节省了数据同步的过程。如果是实时数据写入,综合来说,提升写入速度从以下几方面入手:加大translog flush间隔,目的是降低iops、writeblock。 加大index refre...原创 2020-06-03 17:56:59 · 3251 阅读 · 1 评论 -
elasticsearch中index的shard规划原则
数据分布均匀 对于数据量较小(100GB以下)的index,往往写入压力查询压力相对较低,一般设置3~5个shard,numberofreplicas设置为1即可(也就是一主一从,共两副本) 。 对于数据量较大(100GB以上)的index: 一般把单个shard的数据量控制在(20GB~50GB) 让index压力分摊至多个节点:可通过index.routing.allocation.totalshardsper_node参数,强制限定一个节点上该index的sh原创 2020-06-03 17:17:44 · 1259 阅读 · 0 评论 -
elasticsearch生产集群部署-集群规划建议(转载)
一般来说,如果我们刚开始用es,都是先在自己的笔记本电脑上,或者是几个虚拟机组成的小集群上,安装一个es,然后开始学习和试用其中的功能。但是如果我们要将es部署到生产环境中,那么是由很多额外的事情要做的。需要考虑我们部署的机器的内存、CPU、磁盘、JVM等各种资源和配置。1、内存es是很吃内存的,es吃的主要不是你的jvm的内存,一般来说es用jvm heap(堆内存)还是用的比较少的,主...转载 2020-03-01 17:22:54 · 516 阅读 · 1 评论 -
ElasticSearch6.X query dsl 样例
范围过滤:GET index_name/type_name/_search{ "query": { "bool": { "filter": { "geo_bounding_box": { "location": { "top_left": { "lat"原创 2019-01-29 13:43:51 · 345 阅读 · 0 评论 -
Elasticsearch6.X快捷安装head插件--浏览器安装
环境信息:Elasticsearch6.5,chrome浏览器需求:安装head插件实现:由于elasticsearch 6.0之后的版本head插件不再作为插件形式提供,需要单独安装,有两种方式:1、通过是chrome浏览器安装2、是在服务器端通过nodejs以及npm安装由于第二种需要在服务器端安装nodejs以及npm还需要修改很多配置,较为繁琐,所以本文讲解...原创 2018-11-20 11:02:57 · 1373 阅读 · 0 评论