lucene

海量挑战:腾讯云ES可用性及性能优化实践

回眸只為那壹抹淺笑 提交于 2020-08-05 16:07:12
​导语 | 腾讯云Elasticsearch在腾讯会议中有哪些应用?在大规模海量应用场景下,腾讯云Elasticsearch在高可用和性能方面做了哪些优化?在低成本解决方案中又有哪些独到之处?本文是对腾讯云专家工程师张彬老师在云+社区沙龙online的分享整理,希望与大家一同交流。 点击视频查看完整直播回放 一、腾讯云ES在腾讯会议中的应用 1. 腾讯会议质量分析系统 腾讯会议于2019年12月底上线,两个月内日活突破1000万,被广泛应用于疫情防控会议、远程办公、师生远程授课等场景,为疫情期间的复工复产提供了重要的远程沟通工具。极速增长的会议需求,让腾讯会议服务质量分析系统经受着巨大的考验。 在会议中偶然会存在会议实时音视频卡顿、音视频不同步等会议质量问题,造成上述问题的可能因素比较多,当前运行的网络有丢包或连接不稳定的情况就是其中一种。 为了帮助会议质量团队快速精准地定位分析问题,需要大量运行时的会议质量数据支撑,如网络相关的入网类型、码率、丢包率、网络切换、ip切换等数据,以及客户端相关的CPU使用率、内存使用率、操作系统版本、产品版本等数据信息。 除了数据的实时上报,另一方面,借助多维分析,我们还可以在实时数据中挖掘出异常情况。如某个地区大面积的卡顿,某个版本出现特定的问题等。通过dashboard或数据报表的形式,帮助会议质量团队及时掌控全局情况,快速发现潜在问题。 2.

初级JAVA程序员应该掌握的ElasticSearch知识

爱⌒轻易说出口 提交于 2020-08-05 09:09:44
Elastic Search是什么 一个分布式的全文 检索 系统,基于RESTful web接口,具有高性能,高可用等特点。 为什么用Elastic Search? 检索比Mysql快,在要检索的数据是上亿级别的时候,一个聚合查询Mysql可能要800s,ES可能只需要1s,且ES具有分布式高可用的特点,非常适合中小型公司使用。 项目中用Elastic Search做什么? 收集数据,快速检索分析,日志分析。 Elastic Search为什么那么快? 基于Lucene,原理是倒排索引,简单来说就是给要检索的文档加了一个可以快速查询数据的目录,可以快速检索。 概念和Mysql数据库的对应 Index(索引)~Database(数据库) Type(类型)~Table(表) Document(文档)~Row(行) Field(字段)~Column(列) Mapping(映射)~Schema(方案) Query DSL(查询专用语言)~SQL(结构化查询语言) 如何使用ES 1.搜索“在Windows/linux/Mac安装ElasticSearch” 2.使用ES的JAVA API并结合文档进行操作ElasticSearch ES Java API 我们可以在Spring Boot里引入官方推荐的依赖,来操作Elastic Search, 官方文档写的很详细:https://www

Elasticsearch到底哪点好?

笑着哭i 提交于 2020-08-04 20:23:32
少点代码,多点头发 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues。 https://github.com/midou-tech/articles 从今天开始准备给大家带来全新的一系列文章,Elasticsearch系列 新系列肯定会有很多疑惑,先为大家答疑解惑,下面是今天要讲的问题 为什么写Elasticsearch系列文章? 之前在文章中也陆陆续续的提到过,龙叔是做搜索引擎的。搜索引擎技术属于商业技术,大家耳熟能详的百度搜索,Google搜索,这可都是因为把握核心搜索技术,从而诞生了商业帝国。 每个互联网大厂都想去分一杯搜索的羹,360搜索、神马、头条、搜狗搜索等等,由此可见搜索技术的商业作用和机密性了。 搜索把握用户的入口 蘑菇街的搜索引擎是一款使用C++开发、完全自研、没有开源的搜索引擎,没有开源就是不能随便写出来的。 但是现在不一样了 第一、我离职了,离开了意味着不在持有那些商业机密了,就算不讲出来我也没啥心理负担(但还是不能讲的,离职协议写的很清楚,不能 泄露公司商业机密 )。 第二、去新的公司还是在搜索领域,他们用Es Elasticsearch是一个开源搜索,开源的东西可以随便说,但还是不能说公司的 商业数据 。 自己一直在搜索领域做,输出搜索相关的文章,第一个可以让自己更好的学习和总结,第二个可以让粉丝们了解到搜索这个神秘的技术

ES 01

半世苍凉 提交于 2020-08-04 16:40:37
目录 1 Elasticsearch概述 1.1 Elasticsearch是什么 1.2 Elasticsearch的优点 1.3 Elasticsearch的相关产品 1.4 Elasticsearch的使用场景 2 Elasticsearch的功能概述 2.1 分布式的搜索引擎和数据分析引擎 2.2 全文检索 结构化检索 数据分析 2.3 海量数据的近实时处理 3 Elasticsearch的架构 3.1 gateway - 门户、网关 3.2 Lucene - 分布式Lucene目录 3.2 Discovery - 发现服务 3.3 Scripting - 脚本 3.4 3rd Plugins - 三方插件 3.5 Transport - 通信模块 3.6 JMX - Java管理框架 3.7 RESTful style API - 与集群进行交互 4 Elasticsearch索引相关概念 4.1 term(索引词) 4.2 text(文本) 4.3 analysis(分析) 4.4 cluster(集群) 4.5 node(节点) 4.6 shard(分片) 4.7 replica(副本) 4.8 river(数据源) 4.9 index(索引) 4.10 type(类型) 4.11 document(文档) 4.12 mapping(映射) 4.13 field(字段

ELK的踩坑之旅

心不动则不痛 提交于 2020-07-29 06:24:17
前言 起源 许多年前,一个刚结婚的名叫 Shay Banon 的失业开发者,跟着他的妻子去了伦敦,他的妻子在那里学习厨师。 在寻找一个赚钱的工作的时候,为了给他的妻子做一个食谱搜索引擎,他开始使用 Lucene 的一个早期版本。 直接使用 Lucene 是很难的,因此 Shay 开始做一个抽象层,Java 开发者使用它可以很简单的给他们的程序添加搜索功能。 他发布了他的第一个开源项目 Compass。 后来 Shay 获得了一份工作,主要是高性能,分布式环境下的内存数据网格。这个对于高性能,实时,分布式搜索引擎的需求尤为突出, 他决定重写 Compass,把它变为一个独立的服务并取名 Elasticsearch。 第一个公开版本在2010年2月发布,从此以后,Elasticsearch 已经成为了 Github 上最活跃的项目之一,他拥有超过300名 contributors(目前736名 contributors )。 一家公司已经开始围绕 Elasticsearch 提供商业服务,并开发新的特性,但是,Elasticsearch 将永远开源并对所有人可用。 据说,Shay 的妻子还在等着她的食谱搜索引擎…​ 设计思路如下 有3台机器 2台做elasticsearch的主副节点 1台做kibana和elasticsearch_head

Elasticsearch内存那些事儿

对着背影说爱祢 提交于 2020-07-28 18:52:12
Elasticsearch 内存分配设置详解。 前言 「该给 ES 分配多少内存?」 「为什么是给 ES 分配服务器的一半内存?」 「为什么内存使用率不断升高,没有释放?」 「为何经常有某个 field 的数据量超出内存限制的异常?」 「为何感觉上没多少数据,也会经常 Out Of Memory?」 相信每个ES使用者或者运维人员都遇到过这些问题,也踩过不少坑。 这里根据我个人的学习和日常工作的使用心得,谈一谈 Elasticsearch 的内存那些事儿。 一、Elasticsearch为什么吃内存 ES 是 JAVA 应用 底层存储引擎是基于 Lucene 的 1. 是JAVA应用,就离不开JVM和GC 对 JVM GC 这里不做深入探讨,我们只要知道:应用层面生成大量长生命周期的对象,是给 heap 造成压力的主要原因。 例如读取一大片数据在内存中进行排序,或者在 heap 内部建 cache 缓存大量数据。如果 GC 释放的空间有限,而应用层面持续大量申请新对象,GC 频度就开始上升,同时会消耗掉很多CPU时间。严重时可能恶性循环,导致整个集群停工。因此在使用 ES 的过程中,要知道哪些设置和操作容易造成以上问题,有针对性的予以规避。 2. Lucene的倒排索引是先在内存里生成 Lucene 的倒排索引(Inverted Index)是先在内存里生成,然后定期以段文件

Elasticsearch 范围查询

荒凉一梦 提交于 2020-07-28 11:22:17
范围查询(range query) 范围查询用于匹配某些字段的字段值位于特定范围内的文档。Lucene查询的类型依赖于字段的类型,对于字符串字段,是TermRangeQuery,而对于数字 / 日期字段,查询是NumericRangeQuery。 GET _search { " query " : { " range " : { " age " : { " gte " : 25 , " lte " : 30 } } } } note:查询age字段大于等于25小于等于30的文档。 范围查询接收以下参数: gte:大于等于 gt:大于 lte:小于等于 lt:小于 boost:设置查询的推动值(boost),默认为1. 0 日期字段的范围 当范围查询运行在日期类型的字段上时,可以通过日期数学指定范围。 GET _search { " query " : { " range " : { " date " : { " gte " : " now-1d/d " , " lt " : " now/d " } } } } 日期数学与舍入 当使用日期数学将日期舍入到最近的天、月、小时等时,舍入后的日期依赖于范围的边界是否被包含。 向上舍入移动到舍入范围的最后一毫秒,向下舍入移动到舍入范围的第一毫秒。 gt:大于舍入的日期, 2014 - 11 - 18 ||/M变为2014- 11 -30T23

关于 Elasticsearch 内存占用及分配

强颜欢笑 提交于 2020-07-28 09:48:25
Elasticsearch 和 Lucene 对内存使用情况: Elasticsearch 限制的内存大小是 JAVA 堆空间的大小,不包括Lucene 缓存倒排索引数据空间。 Lucene 中的 倒排索引 segments 存储在文件中,为提高访问速度,都会把它加载到内存中,从而提高 Lucene 性能。所以建议至少留系统一半内存给Lucene。 Node Query Cache (负责缓存f ilter 查询结果),每个节点有一个,被所有 shard 共享,filter query查询结果要么是 yes 要么是no,不涉及 scores 的计算。 集群中每个节点都要配置,默认为: indices.queries.cache.size:10% Indexing Buffer 索引缓冲区,用于存储新索引的文档,当其被填满时,缓冲区中的文档被写入磁盘中的 segments 中。节点上所有 shard 共享。 缓冲区默认大小: indices.memory.index_buffer_size: 10% 如果缓冲区大小设置了百分百则 indices.memory.min_index_buffer_size 用于这是最小值,默认为 48mb。 indices.memory.max_index_buffer_size 用于最大大小,无默认值。 Shard Request Cache

Elasticsearch

前提是你 提交于 2020-07-27 10:46:11
1 Elasticsearch介绍   1、什么是 Elasticsearch ?       1. 使用 java 语言开发的一套开源的全文搜索引擎,建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎       2. 用于搜索、日志管理、安全分析、指标分析、业务分析、应用性能监控等多个领域       3. 底层基于 Lucene 开源库开发,提供 restAPI,可以被任何语言调用       4. 支持分布式部署,可水平扩展       5. 更新迭代快、社区活跃、文档丰富   2、es功能       1. 分布式的搜索引擎和数据分析引擎       2. 数据分析:电商网站,最近7天牙膏销量排行前十商家(举例)       3. 全文检索,结构化检索,数据分析       4. 全文检索:我想搜索商品名称包含牙膏的商品,select * from products where product_name like “%牙膏%”       5. 结构化检索:我想搜索商品分类为日化用品的商品都有哪些,select * from products where category_id=’日化用品’       6. 部分匹配、自动完成、搜索纠错、搜索推荐       7. 数据分析:我们分析每一个商品分类下有多少个商品,select category_id

领课教育开源系统-Elasticsearch的安装和使用

孤人 提交于 2020-07-24 08:49:54
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 下载 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 安装 # tar -zxvf elasticsearch-6.2.2.tar.gz //解压 # mv /opt/tools/elasticsearch-6.2.2 /opt/elasticsearch 说明:移动到/opt/elasticsearch下 配置 # vi /opt/elasticsearch/config/elasticsearch.yml 说明:可以使用默认配置 设置 # vi /usr/lib/systemd/system/elasticsearch.service [Unit] Description=elasticsearch [Service] User=roncoo LimitNOFILE=65536 LimitNPROC=65536 ExecStart=/opt