![](https://img-blog.csdnimg.cn/direct/02d7ca7d95e448a1ac4f0841ba268bde.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ElasticSearch 内容分享
文章平均质量分 75
Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。
之乎者也·
机车疾驰在路上,代码飞舞在指尖,热血与逻辑交织,创造属于我的数字世界。
展开
-
JAVA面试题分享四百五十八:几个典型 Elasticsearch 8.X 问题及方案探讨
铭毅老师你好,想请问一下,往es索引里面插入文档分为指定文档id和自动生成文档id,目前有一个需求在插入文档的时候,将文档的id值取插入的文档中的一个字段。原创 2024-02-04 22:14:04 · 796 阅读 · 0 评论 -
JAVA面试题分享四百零六:ElasticSearch 的使用建议
例如在满负载的写入压力测试中,Mapping 相同的情况下,一个有 10 个字段,200 字节的 Doc, 通过增加某些字段 Value 的长度到 500 字节,写入 ES 时速度下降很少,而如果字段数增加到 20,即使整个 Doc 字节数没增加多少,写入速度也会降低一倍。_all 默认将写入的字段拼接成一个大的字符串,并对该字段进行分词,用于支持整个 Doc 的全文检索,“_all”字段在查询时占用更多的 CPU,同时占用更多的磁盘存储空间,默认为“false”,不建议开启该字段和使用。原创 2024-02-01 17:41:57 · 845 阅读 · 0 评论 -
JAVA面试题分享三百四十:Elasticsearch “指纹”去重机制,你实践中用到了吗?
在 Elasticsearch 中,Fingerprint(指纹)通常指的是一种机制,用于为数据生成一个唯一的标识符或指纹。这个指纹是基于数据内容的一个哈希值,可用于识别和区分数据项。原创 2024-01-26 10:29:16 · 900 阅读 · 0 评论 -
架构设计内容分享(二十四):10亿级ES海量搜索狂飙10倍,该怎么办?
这样搜索的时候,其余的28个字段是和搜索无关的,占了90%以上。举个例子,拿微博来说,一些大V数据,或者一下其他的平时看的人很多的数据,就是使用 热点探测子系统和缓存预热子系统结合的路子,每隔一会儿, 探测到热点数据之后,预热子系统就去搜索一下热数据,刷到 filesystem cache 里去。首先要扫描到所有term的文档列表,找到包含所有term的文档列表,然后对每个文档都计算每个term的position,是否符合指定的范围,需要进行复杂的运算,才能判断能否通过slop移动,匹配到这个文档。原创 2023-12-22 08:30:28 · 1266 阅读 · 0 评论 -
JAVA面试题分享三百二十:ES超详细讲解
搜索引擎是对数据的检索,所以我们先从生活中的数据说起。和。:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据,如数据库,元数据等。:又可称为全文数据,不定长或无固定格式,不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、word文档,邮件,各类报表、图片和咅频、视频信息等。说明:如果要更细致的区分的话,XML、HTML可划分为。原创 2023-12-20 08:49:21 · 1120 阅读 · 0 评论 -
JAVA面试题分享二百五十五:mysql 和 es 的5个一致性方案,你知道吗?
MySQL通过binlog订阅实现主从同步,canal Server 是一个伪装的slave节点,接收到binlog日志后,发送到MQ, 其他的 存储消费 MQ里边 的binlog日志,实现数据订阅。接下来,以 mysql 与 es 的数据一致,作为业务场景进行分析, 其他的场景比如mysql 与 redis 的数据一致性方案,都是差不多的。ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。原创 2023-12-15 09:24:50 · 1152 阅读 · 0 评论 -
JAVA面试题分享一百二十四:关于“谈谈你对 ES 的理解?
ES(Elasticsearch)是一个建立在全文搜索引擎库Lucene基础上的开源搜索和分析引擎。它是一个分布式、RESTful风格的搜索和分析引擎,能够解决越来越多由数据规模带来的搜索、分析和探索的挑战。总之,ES是一个功能强大、易于使用和维护的搜索和分析引擎,可以处理大规模数据并且支持各种复杂的查询和过滤操作。原创 2023-12-01 08:30:36 · 777 阅读 · 0 评论 -
JAVA面试题分享一百零六:ES并发量很大怎么办?
总之,优化ES集群的并发处理能力需要从多个方面入手,包括硬件、软件、网络等多个层面。原创 2023-11-30 10:05:29 · 581 阅读 · 0 评论 -
JAVA面试小结四十三:Elasticsearch与关系型数据库对比
不同之处在于索引中的每个文档可以具有不同的结构(字段),但是对于通用字段应该具有相同的数据类型。群集是一个或多个节点(服务器)的集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(ES7中已作废),类型中包含了很多文档(行),每个文档又包含了很多字段(列)。原创 2023-10-31 09:58:33 · 83 阅读 · 0 评论 -
JAVA面试小结四十二:Lucene和Solr和Elasticsearch的区别
同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。1.Elasticsearch是分布式的。6.Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。原创 2023-10-30 23:44:31 · 48 阅读 · 0 评论 -
JAVA面试小结四十一:elasticsearch 是如何实现 master 选举的
这个我看了各种网上分析的版本和源码分析的书籍,云里雾里。核对了一下代码,核心入口为 findMaster,选择主节点成功返回对应 Master,否则返回 null。第二步:比较:先判定是否具备 master 资格,具备候选主节点资格的优先返回;第一步:确认候选主节点数达标,elasticsearch.yml 设置的值。2、 最小主节点数(min_master_nodes)的目的是防止脑裂。1、 只有候选主节点(master:true)的节点才能成为主节点。若两节点都为候选主节点,则 id 小的值会主节点。原创 2023-10-30 23:38:47 · 132 阅读 · 0 评论 -
JAVA面试小结四十:Elasticsearch索引文档的过程
第三步:节点3在主分片上执行写操作,如果成功,则将请求并行转发到节点1和节点2的副本分片上,等待结果返回。所有的副本分片都报告成功,节点3将向协调节点(节点1)报告成功,节点1向请求客户端报告写入成功。第二步:节点1接受到请求后,使用文档_id来确定文档属于分片0。请求会被转到另外的节点,假定节点3。因此分片0的主分片分配到节点3上。(如果没有指定路由/协调节点,请求的节点扮演路由节点的角色。回借助路由算法获取,路由算法就是根据路由和文档id计算目标的分片id的过程。原创 2023-10-30 23:37:54 · 29 阅读 · 0 评论 -
JAVA面试小结三十九:ES 分片策略
ES(Elasticsearch)的分区策略主要涉及如何将索引数据分配给多个分片,以实现分布式的数据存储和查询。ES的分区策略是基于哈希算法的,通过将文档的ID或其他字段值进行哈希计算,然后将结果映射到特定的分片上,以实现数据的均匀分布。通过这种分区策略,ES可以实现数据的均匀分布,使得每个分片上的数据量大致相等,从而提高了系统的可扩展性和性能。同时,当一个节点发生故障时,其他节点上的分片仍然可以继续提供服务,增加了系统的可靠性和可用性。原创 2023-10-30 23:35:15 · 173 阅读 · 0 评论 -
JAVA面试小结三十八:lucene字典实现原理——FST
利用该结构可以很方便的进行查询,如给定一个term “dog”,我们可以通过上述结构很方便的查询存不存在,甚至我们在构建过程中可以将单词与某一数字、单词进行关联,从而实现key-value的映射。我们对“cat”、 “deep”、 “do”、 “dog” 、“dogs”这5个单词进行插入构建FST(注:必须已排序)。与前一个单词“deep”进行最大前缀匹配,发现是d,则在d边后增加新边o,o边指向终点。与前一个单词“do”进行最大前缀匹配,发现是do,则在o边后增加新边g,g边指向终点。原创 2023-10-30 23:34:06 · 159 阅读 · 0 评论 -
JAVA面试小结三十七:es压缩算法详解
首先回答前两个问题:数组肯定可以压缩,而且正是我们需要去做的;用FOR算法在这里进行压缩是可以的,不算错,但是我们说不合适,正如在FOR算法中介绍的那样,压缩的同时我们还有考虑解码时的效率,其实这里已经经过除法做了一次处理了,那么再用减法做一次处理,再解码时效率会降低不少,所以我们追求的是一种解码更加容器,但又能具备压缩能力的方法。但数值大小很大时,减法能够达到的效果是不明显的,比如100W,200W,300W,相减后是100W,100W,100W,依然很大,这时的压缩效果很不理想,所以引入了RBM算法。原创 2023-10-30 23:32:41 · 234 阅读 · 0 评论 -
JAVA面试小结三十六:ES优化策略有哪些
总之,Elasticsearch的优化需要从多个方面入手,综合考虑硬件、数据模型、查询语句和系统配置等方面的因素,以达到最佳的性能和可靠性。调整系统配置:通过调整系统的JVM参数、操作系统参数等配置,可以优化系统的性能和稳定性,提高Elasticsearch的运行效率。使用缓存:通过合理使用Elasticsearch的缓存机制,可以避免不必要的磁盘IO和网络传输,提高查询效率。优化查询语句:通过优化查询语句,使用合适的查询方式和过滤条件,可以减少查询的复杂度和提高查询效率。原创 2023-10-30 23:26:44 · 110 阅读 · 0 评论 -
JAVA面试小结三十五:ES相关面试题以及相关答案
倒排索引是一种将文档中的单词与包含这些单词的文档建立映射的数据结构。单词词典包含文档中出现的所有单词及其出现的频率和位置信息,倒排列表则包含包含某个单词的所有文档的列表。当文档被索引时,它会被分配到一个主分片上,然后副本分片会从主分片上复制数据,以提供数据的高可用性和故障恢复能力。映射定义了字段的名称、数据类型、分析器和其他属性,以确保索引和搜索的正确性和效率。分片可以提高索引的性能和可扩展性,使得数据可以分布在多个节点上,并且可以并行处理查询和索引操作。原创 2023-10-30 23:22:52 · 136 阅读 · 0 评论 -
ElasticSearch内容分享(八):ES大厂实践 - 哈啰、腾讯、美团
最近十年,Elasticsearch 已经成为了最受欢迎的开源检索引擎,其作为离线数仓、近线检索、B端检索的经典基建,已沉淀了大量的实践案例及优化总结。然而在高并发、高可用、大数据量的 C 端场景,目前可参考的资料并不多。因此,我们希望通过分享在外卖搜索场景下的优化实践,能为大家提供 Elasticsearch 优化思路上的一些借鉴。美团在外卖搜索业务场景中大规模地使用了 Elasticsearch 作为底层检索引擎。其在过去几年很好地支持了外卖每天十亿以上的检索流量。原创 2023-12-10 21:14:41 · 1407 阅读 · 0 评论 -
ElasticSearch内容分享(七):ES 从入门到精通
Elasticsearch可以将大量的数据进行存储、索引和检索,并支持多样化查询,具有分布式架构、面向文档、实时搜索与分析、可扩展性等特点。在 Elasticsearch 中,映射是可选的,如果没有显式指定,则 Elasticsearch 会根据文档中的数据自动推断字段类型。Logstash 是一款开源的数据收集、处理和转换工具,它可以帮助我们轻松地收集各种类型的数据,并将其转换为 Elasticsearch 支持的格式。Bool 查询是一个复合查询,它通过组合多个不同类型的查询来实现更复杂的搜索需求。原创 2023-12-09 09:20:00 · 819 阅读 · 0 评论 -
ElasticSearch内容分享(六):ES集群
例如:3个节点形成的集群,选票必须超过 (3 + 1) / 2 ,也就是2票。node3得到node2和node3的选票,当选为主。node2成为主节点后,会检测集群监控状态,发现:shard-1、shard-0没有副本节点。集群的master节点会监控集群中的节点状态,如果发现有节点宕机,会立即将宕机节点的分片数据迁移到其它节点,确保数据安全,这个叫做故障转移。当node3当选后,集群继续对外提供服务,node2和node3自成集群,node1自成集群,两个集群数据不同步,出现数据差异。原创 2023-12-09 09:12:10 · 966 阅读 · 0 评论 -
ElasticSearch内容分享(五):ElasticSearch自动补全
如何使用拼音分词器?①下载pinyin分词器②解压并放到elasticsearch的plugin目录③重启即可如何自定义分词器?①创建索引库时,在settings中配置,可以包含三部分③tokenizer④filter拼音分词器注意事项?为了避免搜索到同音字,搜索时不要使用拼音分词器默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。character filters:在tokenizer之前对文本进行处理。原创 2023-12-09 09:05:33 · 1127 阅读 · 0 评论 -
ElasticSearch内容分享(四):ES搜索引擎
但是elasticsearch将来一定是集群,例如我集群有5个节点,我要查询TOP1000的数据,并不是每个节点查询200条就可以了。那每个节点都要查询10000条?因此要想获取整个集群的TOP1000,必须先查询出每个节点的TOP1000,汇总结果后,重新排名,重新截取TOP1000。可以看到,API与其它查询的差别同样是在查询条件的构建,QueryBuilders,结果解析等其他代码完全不变。每一个不同的字段,其查询的条件、方式都不一样,必须是多个不同的查询,而要组合这些查询,就必须用bool查询了。原创 2023-12-09 09:01:23 · 995 阅读 · 0 评论 -
ElasticSearch内容分享(一):ElasticSearch介绍
elasticsearch底层是基于lucene来实现的。Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。。2004年Shay Banon基于Lucene开发了Compass2010年Shay Banon 重写了Compass,取名为Elasticsearch。原创 2023-12-09 08:44:38 · 889 阅读 · 0 评论 -
ElasticSearch内容分享(三):RestAPI
在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中,必须先完成这个对象的初始化,建立与elasticsearch的连接。在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中,必须先完成这个对象的初始化,建立与elasticsearch的连接。不过查询的目的是得到结果,解析为HotelDoc,因此难点是结果的解析。原创 2023-12-09 08:56:13 · 951 阅读 · 0 评论 -
ElasticSearch内容分享(二):索引库和文档操作
倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。根据rest风格,新增是post,查询应该是get,不过查询一般都需要条件,这里我们把文档id带上。字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址):如果根据id删除时,id不存在,第二步的新增也会执行,也就从修改变成了新增操作了。索引库就类似数据库表,mapping映射就类似表的结构。增量修改是只修改指定id匹配的文档中的部分字段。原创 2023-12-09 08:51:13 · 1022 阅读 · 0 评论