网站目录做二级域名WordPress网站生成小程序

bicheng/2026/1/18 17:25:31/文章来源:
网站目录做二级域名,WordPress网站生成小程序,做网站 服务器价格,后端开发百度百科面试题之ElasticSearch 1.es的基础知识2. es的集群、节点、分片、副本分片的定义#xff1f;3. es为什么快#xff1f;4. 倒排索引的原理是什么#xff1f;5. es的segment是什么#xff1f;6. es的分段存储和分段索引的概念及区别#xff1f;7. 索引相关的问题#xff1f… 面试题之ElasticSearch 1.es的基础知识2. es的集群、节点、分片、副本分片的定义3. es为什么快4. 倒排索引的原理是什么5. es的segment是什么6. es的分段存储和分段索引的概念及区别7. 索引相关的问题8. es的索引写入和文档写入定义及区别9. es的编译器、分析器、过滤器是什么10. es的更新是怎么操作的11. es的删除是怎么操作的12. es是怎么实现搜索的13. es是怎么保证读写一致的14. es的分页方法有哪几种15. es的缓存的原理缓存大小对使用有影响么16. es什么请求不能被缓存17. es优化查询的手段是什么18. es怎么批量导入数据19. es的文本相似度TF-IDF是什么20. 如何实现es的master选举的21. 如果多个节点都向其他节点发送我是主master的信息。那么其他节点是怎么确定一个节点是主master的22. es的api是什么23. elk你了解么24. 你公司es的集群是怎么配置的25. es的使用场景为什么要选es作为搜索引擎26. es的聚合操作指的是什么27. es写入异常或者写入缓慢怎么排查解决28. es 一共5m的存储空间你存了4m还想存3m怎么存29.为了保证线上可用导入的时候是怎么操作的 重新自己整理过后的es相关面试题这里包括八股文和之前面试遇到的问题后续会持续更新~ 1.es的基础知识 es的类型定义和mysql的映射关系es常用数据类型有哪些es常用方法有哪些es的分词有哪些 es的类型定义和mysql的映射关系 esmysql索引 Index数据库Database类型 Type表table文档document数据行row字段 Fieldcolumn es的常用数据类型 字符串类型包括text和keyword。text(不分词)类型用于全文搜索而keyword(分词)类型适用于索引结构化内容如ID、电子邮件地址、主机名、状态码、邮政编码或标签。数值类型包括整数、长整数、短整数、字节、双精度浮点数、单精度浮点数、半精度浮点数和缩放浮点数等。这些类型可用于存储不同范围的数值数据。日期类型date类型用于存储日期和时间。布尔类型boolean类型用于存储真或假值。二进制类型binary类型用于存储二进制数据。范围类型包括integer_range、float_range、long_range和double_range等用于存储不同范围的数值数据。数组类型ES支持数组字段可以存储多个值。对象类型单个JSON对象用于存储复杂的数据结构。嵌套类型嵌套的JSON对象用于处理具有复杂关系的JSON数据。Geo-point数据类型geo_point类型用于存储地理坐标点如经纬度。Geo-shape数据类型geo_shape类型用于存储复杂的地理形状如多边形。IP类型ip类型用于存储IPv4和IPv6地址。Completion类型completion类型用于自动完成查询。 es的常用方法 索引创建使用PUT或POST方法向ES中添加或更新文档。 例如PUT /index_name/_doc/doc_id { field: value }索引获取使用GET方法获取指定索引的信息。 例如GET /index_name索引删除使用DELETE方法删除指定索引。 例如DELETE /index_name文档查询使用GET方法查询指定索引中的文档。 例如GET /index_name/_search { query: { match: { field: value } } }聚合查询使用POST方法对指定索引中的文档进行聚合分析。 例如POST /index_name/_search {aggs:{group_by_field:{terms:{field:field_name}}}}高亮显示使用_highlight字段在查询结果中高亮显示匹配的文本。 例如GET /index_name/_search { highlight: { fields: { field_name:{}}}}排序查询使用sort参数对查询结果进行排序。 例如GET /index_name/_search { sort: [ { field_name: { order: asc }}]}分页查询使用from和size参数对查询结果进行分页。 例如GET /index_name/_search {from: 0,size:10,query:{match:{field:value}}}更新文档使用POST或PATCH方法更新指定索引中的文档。 例如POST /index_name/_doc/doc_id/_update {doc:{field:new_value}}删除文档使用DELETE方法删除指定索引中的文档。 例如DELETE /index_name/_doc/doc_ides的分词 Standard Analyzer标准分词器按词切分小写处理默认停用词默认是关闭的。Simple Analyzer按照非字母切分非字母都会被去除即只处理字母小写处理。Whitespace Analyzer按照空格切分。Keyword Analyzer不分词直接将输入的文档当做一个词输出。Pattern Analyzer通过在空格进行分词的情况下进行正则表达式进行分词默认是\W非字符的符号进行分割含停用词和小写处理。Language Analyzer针对不同的语言选择分词例如english语言分词会去除词性如running分词结果为run- foxes分词结果为fox等含有停用词处理。IK Analyzer支持自定义词库支持热更新分词词典。 问题1有一个字段是”我爱中国“我想查中国能查出来么 答如果没有分词器查不出来问题2我有一个自定义的中文词库能导入么 答可以IK词库支持自定义词库。英文是默认空格分词的 2. es的集群、节点、分片、副本分片的定义 集群有多个节点一个节点正常来说部署一个分片(容灾考虑)当然也可以部署多个分片每个分片都会有副本分片(当然也可以没有)每个分片是由多个分段组成。每个分片都只为一个索引服务比如上边的分片12只为索引1服务。 集群节点通过设置集群名称在同一网络中发现具有相同集群名称的节点组成集群。每个集群都有一个 cluster name 作为标识默认的集群名称为 elasticsearch。如果在同一网络中只有一个节点则这个节点成为一个单节点集群。 集群状态 Green所有主分片和从分片都准备就绪分配成功即使有一台机器挂了假设一台机器一个实例数据都不会丢失但会变成 Yellow 状态。Yellow所有主分片准备就绪但存在至少一个主分片假设是 A对应的从分片没有就绪此时集群属于警告状态意味着集群高可用和容灾能力下降如果刚好 A 所在的机器挂了而从分片还处于未就绪状态那么 A 的数据就会丢失查询结果不完整此时集群进入 Red 状态。Red至少有一个主分片没有就绪直接原因是找不到对应的从分片成为新的主分片此时查询的结果会出现数据丢失不完整。 节点一个 ES 节点就是一个运行的 ES 实例可以实现数据存储并且搜索的功能。每个节点都有一个唯一的名称作为身份标识如果没有设置名称默认使用 UUID 作为名称。最好给每个节点都定义上有意义的名称在集群中区分出各个节点。 节点类型 master 节点 集群中的一个节点会被选为 master 节点它将负责管理集群范畴的变更例如创建或删除索引添加节点到集群或从集群中删除节点。master 节点无需参与文档层面的变更和搜索这意味着仅有一个 master 节点并不会因流量增长而成为瓶颈。任意一个节点都可以成为 master 节点。data 节点 持有数据和倒排索引。默认情况下每个节点都可以通过设定配置文件 elasticsearch.yml 中的 node.data 属性为 true (默认) 成为数据节点。如果需要一个专门的主节点 (一个节点既可以是 master 节点同时也可以是 data 节点)应将其 node.data 属性设置为 false。client 节点 如果将 node.master 属性和 node.data 属性都设置为 false那么该节点就是一个客户端节点扮演一个负载均衡的角色将到来的请求路由到集群中的各个节点。 一个机器可以有多个实例所以并不能说一台机器就是一个 node大多数情况下每个 node 运行在一个独立的环境或虚拟机上。 分片(shard)分为主分片和副本分片 单个节点由于物理机硬件限制存储的文档是有限的如果一个索引包含海量文档则不能在单个节点存储。ES 提供分片机制同一个索引可以存储在不同分片数据容器中。分片分为主分片 (primary shard) 以及从分片 (replica shard)。主分片会被尽可能平均地 (rebalance) 分配在不同的节点上例如你有 2 个节点4 个主分片不考虑备份那么每个节点会分到 2 个分片后来你增加了 2 个节点那么你这 4 个节点上都会有 1 个分片这个过程叫 relocationES 感知后自动完成)。从分片只是主分片的一个副本它用于提供数据的冗余副本从分片和主分片不会出现在同一个节点上防止单点故障默认情况下一个索引创建 5 个主分片每个主分片会有一个从分片 (5 primary 5 replica 10 个分片)。如果你只有一个节点那么 5 个 replica 都无法被分配 (unassigned)此时 cluster status 会变成 Yellow。分片是独立的对于一个 Search Request 的行为每个分片都会执行这个 Request。每个分片都是一个 Lucene Index所以一个分片只能存放 Integer.MAX_VALUE - 128 2,147,483,519 个 docs。 副本分片(replica)是分片的一份或多份拷贝就是副本分片 replica 的作用主要包括 容灾primary 分片丢失replica 分片就会被顶上去成为新的主分片同时根据这个新的主分片创建新的 replica集群数据安然无恙提高查询性能replica 和 primary 分片的数据是相同的所以对于一个 query 既可以查主分片也可以查从分片在合适的范围内多个 replica 性能会更优但要考虑资源占用也会提升 [cpu/disk/heap]另外 Index Request 只能发生在主分片上replica 不能执行 Index Request。 注意对于一个索引除非重建索引否则不能调整主分片的数目 (number_of_shards)但可以随时调整 replica 的数目 (number_of_replicas)。 3. es为什么快 分布式架构Elasticsearch采用分布式架构可以横向扩展到数百台服务器处理大规模数据集。它通过将数据分片到不同的节点上提高了并行处理能力和数据分布的均匀性从而提高了查询性能。近实时搜索Elasticsearch提供了近实时搜索功能能够在数秒内完成数据的索引和查询。这得益于其高效的索引和查询机制以及数据复制和分片的策略。倒排索引Elasticsearch使用倒排索引技术将文本数据分词后保存为倒排索引使得能够快速查找包含特定词项的文档。这种数据结构大大提高了搜索效率。高效的数据存储和检索Elasticsearch使用Lucene作为其存储和检索引擎通过优化存储和检索过程提高了数据访问速度。它还支持对数据的压缩存储进一步减少了磁盘空间的使用和提高了IO效率。分段和合并策略Elasticsearch采用分段和合并策略来优化磁盘空间使用和提高查询性能。它将索引分为多个段当需要检索时可以并行地对这些段进行操作从而提高检索速度。它还定期合并这些段以释放磁盘空间并在必要时对索引进行优化以提高性能。请求路由Elasticsearch通过请求路由机制将查询请求分发到适当的节点上从而避免了不必要的网络传输和节点间通信。这有助于提高查询性能和系统的可用性。缓存机制Elasticsearch使用缓存机制来提高查询性能。它缓存常用的查询结果和数据片段以便能够快速返回响应结果。这减少了重复的计算和磁盘IO操作提高了查询效率。优秀的硬件支持Elasticsearch对硬件配置有较高的要求尤其是磁盘I/O性能和内存容量。使用高性能的硬件配置可以进一步提高Elasticsearch的性能表现。 4. 倒排索引的原理是什么 倒排索引是一种以词为基础的数据结构用于将词与包含该词的文档建立映射关系。它的原理是将文档集合中的每个文档进行分词将每个词与包含该词的文档建立映射关系。具体来说倒排索引表中的每一项都包括一个属性值即词和具有该属性值的各记录的地址即包含该词的文档列表。查询时可以通过倒排索引快速找到包含某个词的文档从而提高检索效率。倒排索引一般表示为一个关键词和它的频度、位置等信息好比一本书的目录、标签一般读者可以根据目录直接找到相关的页面不必再从书的第一页到最后一页一页一页的查找。 5. es的segment是什么 在Elasticsearch中Segment是数据存储和检索的基本单位。多个段组成分片当数据被索引时它们被分配到不同的Segment中。每个Segment在磁盘上都是一个独立的文件并且包含了一部分索引的数据。 Segment的主要作用是提高搜索和索引的效率。在执行搜索操作时Elasticsearch会并行搜索多个Segment然后将结果合并返回给用户。这种并行搜索的方式能够大大加速搜索过程。而在进行索引操作时Elasticsearch会根据需要将文档写入到相应的Segment中。这种分段的方式可以有效地降低内存占用和磁盘的使用提高索引的效率。 当新的数据被索引时它们首先被写入到一个新的Segment中。随着时间的推移旧的Segment可能会被标记为不再使用并被删除。这个过程是由Elasticsearch自动管理的用户不需要手动干预。 总之Segment是Elasticsearch中用于存储和检索数据的基本单位它通过并行搜索和分段存储的方式来提高搜索和索引的效率。 6. es的分段存储和分段索引的概念及区别 分段存储 数据被分成了多个段segments每个段都是一个独立的索引文档集合。这种分段存储的方式可以更高效地分配内存和存储空间因为不同的索引可以使用不同的段来存储数据。当有新的数据需要创建索引时由于段的不变性所以选择新建一个段来存储新增的数据。这种增量创建的方式可以提高性能避免了对已有数据的全量复制。在更新数据时结合新增和删除操作。先在.del 文件中记录旧数据再在新段中添加一条更新后的数据。这样可以提高性能因为数据操作是在内存中完成的减少了磁盘I/O操作。Elasticsearch的底层使用Lucene而Lucene使用基于倒排索引和分段segment存储的方式完成数据索引。索引文件被拆分为多个子文件每个子文件就叫做段。每个段本身都是一个倒排索引并且段具有不变性一旦索引的数据被写入硬盘就不可再修改。这种分段存储模式使它在读写时几乎完全避免了锁的出现大大提升了读写性能。段被写入到磁盘后会生成一个提交点提交点是一个用来记录所有提交后段信息的文件。一个段一旦拥有了提交点就说明这个段只有读的权限失去了写的权限。相反当段在内存中时就只有写的权限而不具备读数据的权限意味着不能被检索。 分段索引 在Elasticsearch中分段索引Segment是倒排索引的一部分它是Elasticsearch中最小的存储单元。每个分段都包含了特定范围内的文档数据以及相应的倒排索引信息。分段的存在使得Elasticsearch能够在数据更新、删除、搜索等操作时进行并发处理从而提高搜索的效率降低IO的开销并且还能支持实时搜索等功能。 在底层Elasticsearch将索引文件拆分为多个子文件每个子文件就是一个段。每个段本身都是一个倒排索引并且段具有不变性一旦索引的数据被写入硬盘就不可再修改。这种分段存储模式使它在读写时几乎完全避免了锁的出现大大提升了读写性能。 当文档被索引时Elasticsearch会自动根据一定的条件触发分段的创建。当索引的文档数量达到一定的阈值时会触发新的分段的创建。除了自动触发也可以手动触发分段的创建。通过API可以指定创建新的分段这在某些情况下是非常有用的比如在数据导入完成后手动进行一次分段的优化等。 简述概念及区别可以总的来说虽然两者都涉及到数据切分但是 分段索引是倒排索引的一部分是Elasticsearch中最小的存储单元包含了特定范围内的文档数据以及相应的倒排索引信息主要关注于倒排索引的组成和存储,用于提高搜索效率、降低IO开销和实现实时搜索的一种机制;分段存储则是将索引数据分成多个独立的段每个段包含一个索引的文档集合更关注于整个索引数据的切分和存储方式这样可以更高效地分配内存和存储空间。 7. 索引相关的问题 什么是索引索引优化索引数据多了如何调优部署索引失效的原因 索引 ElasticsearchES中的索引是一个逻辑存储空间用于存储、搜索、分析和查询数据。它类似于关系型数据库中的数据库可以将数据存放在一台服务器上也可以分片后存放到多台服务器上。每个索引由一个或多个分片组成每个分片可以有多个副本。 每个索引包含一个或多个文档每个文档包含一个或多个字段。这些字段可以是结构化的也可以是非结构化的。索引的映射定义了文档的结构和字段类型包括字段名、字段类型、分析器等。 此外索引还可以进行各种查询和过滤操作如全文搜索、词条搜索、范围搜索和正则表达式搜索等。通过聚合可以对文档进行分组和汇总计算统计信息和计算指标。 索引优化 调整索引设置根据实际需求和数据量大小合理设置索引的shard 数量、副本数等参数以提高索引的读写性能和容错能力。优化映射定义合适的字段类型和映射关系避免过度映射或缺失映射可以提高索引的准确性和查询效率。定期清理和维护定期清理过期的数据和日志文件释放存储空间同时保持索引的最新状态可以避免不必要的磁盘空间浪费和性能下降。使用合适的分词器和分析器根据数据的特点和查询需求选择合适的分词器和分析器可以提高索引的准确性和查询性能。避免过度索引避免创建过多的索引和不必要的字段可以减少磁盘使用空间和提高查询效率。合理使用聚合查询聚合查询可以提高数据的分析能力和查询效率但过多的聚合操作会增加索引的负担和查询时间。因此需要合理使用聚合查询。优化数据写入控制数据写入的速率和批量操作的大小可以减少磁盘I/O负载和提高写入效率。使用缓存合理利用Elasticsearch内置的缓存机制可以提高查询速度和减轻索引的负担。监控和调优定期监控索引的性能指标和资源使用情况根据实际情况进行调优和优化可以保持索引的高效运行状态。 索引数据多了如何调优部署 面试官是想考察大数据量的运维能力 索引数据的规划应在前期做好规划正所谓“设计先行编码在后”这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。 如何调优 动态索引层面 基于模板时间rollover api 滚动创建索引举例设计阶段定义blog 索引的模板格式为 blog_index_时间戳的形式每天递增数据。这样做的好处不至于数据量激增导致单个索引数据量非常大接近于上线 2 的32 次幂-1索引存储达到了 TB甚至更大。 一旦单个索引很大存储等各种风险也随之而来所以要提前考虑及早避免。存储层面 冷热数据分离存储热数据比如最近 3 天或者一周的数据其余为冷数据。 对于冷数据不会再写入新数据可以考虑定期 force_merge 加 shrink 压缩操作节省存储空间和检索效率。部署层面 一旦之前没有规划这里就属于应急策略。 结合 ES 自身的支持动态扩展的特点动态新增机器的方式可以缓解集群压力注意如果之前主节点等规划合理不需要重启集群也能完成动态新增的。 es索引失效的原因 索引被删除或不存在当索引被删除或不存在时相关的查询请求将无法找到匹配的索引导致查询失败或返回空结果。数据类型不匹配在查询时如果请求中的数据类型与索引中的数据类型不匹配可能会导致索引失效。例如使用了错误的日期格式或数字范围。字段不存在如果查询中引用了不存在的字段或者字段名称拼写错误将无法找到匹配的字段导致索引失效。查询语法错误查询语句中存在语法错误例如使用了错误的查询操作符或错误的查询语法结构。过滤器或聚合函数错误在使用过滤器或聚合函数时如果函数参数错误或参数类型不匹配会导致索引失效。映射类型不匹配在创建索引时如果没有正确配置映射类型或者映射类型与数据不匹配会导致索引失效。版本冲突在更新文档时如果新版本与旧版本冲突可能会导致索引更新失败。权限问题如果Elasticsearch集群的安全设置限制了对特定索引的访问或者用户没有足够的权限访问索引会导致索引失效。资源限制如果Elasticsearch集群的资源使用达到上限例如内存、CPU或磁盘空间不足可能会导致索引写入或查询失败。网络问题网络延迟、丢包或网络不稳定可能导致请求无法正确到达Elasticsearch节点导致索引失效。 8. es的索引写入和文档写入定义及区别 索引写入 当有新的数据需要写入索引时数据首先会被写入到内存中的缓冲区。每隔1秒内存中的缓冲区数据会被刷新flush到操作系统的缓存中并生成一个segment文件。在这个过程中Elasticsearch会进行refresh操作将内存中的数据写入到硬盘上。由于硬盘上的日志文件会不断增大因此每隔30分钟Elasticsearch会强制将translog日志文件中的数据刷到磁盘的segment文件中并清空日志文件。这个过程叫做flush。由于磁盘中的日志文件是每隔5秒钟就写入一次的那么肯定会越来越大所以每隔30分钟会强行将translog日志文件中的数据刷到磁盘segment file中然后清空日志文件。这个过程叫做flush。在flush的过程中会进行segment merge操作将相似的多个文件合并为一个文件。同时还会写一个commit point标识所有新的segment file文件并打开文件供搜索操作。同时删除旧的segment file文件。在整个写入过程中Elasticsearch会使用多线程或多进程来并行处理数据写入操作以提高写入效率 文档写入 客户端选择一个节点作为协调节点该节点负责路由和分片的管理。协调节点首先会根据文档的ID进行哈希计算确定应该将文档写入哪个分片。协调节点将请求发送到对应的主分片所在的节点上。如果当前节点不是主分片所在节点则请求将被转发到主分片所在的节点上。主分片节点接收到写入请求后会将文档写入到内存中的缓冲区并同步到副本分片上。数据写入完成后向协调节点发送写入成功的响应。协调节点收到写入成功的响应后返回结果给客户端完成写入操作。 在写入文档的过程中Elasticsearch会使用多个线程或进程来并行处理数据写入操作以提高写入效率。同时为了防止数据丢失Elasticsearch会将每次写入的数据同时写入到translog日志中并提供实时的CRUD操作。此外为了提高查询性能和容错能力Elasticsearch会将数据分成多个分片和副本并使用倒排索引进行索引和搜索操作。 区别 索引写入主要涉及到索引的创建、更新和删除操作。当需要创建一个新的索引或者对已有的索引进行更新时会涉及到索引写入的逻辑。索引写入会更新Elasticsearch中的元数据信息并可能会涉及到分片和副本的分配、映射类型的更新等操作。索引写入是一个比较重量级的操作通常会在索引结构发生较大变化时进行。文档写入则是针对具体的文档进行写入操作包括文档的创建、更新和删除。文档写入是一个相对轻量级的操作可以在不影响索引结构的情况下对单个文档进行写入。 9. es的编译器、分析器、过滤器是什么 编译器编译器用于将字符串分解为术语或标记流。一个简单的编译器可能会将字符串拆分为任何遇到空格或标点的地方。Elasticsearch有许多内置标记器可用于构建自定义分析器。 分析器在ElasticSearch中索引数据时数据由为索引定义的Analyzer在内部进行转换。 分析器由一个 Tokenizer和零个或多个TokenFilter组成。编译器可以在一个或多个CharFilter之前。分析模块允许 您在逻辑名称下注册分析器然后可以在映射定义或某些API中引用它们。 Elasticsearch附带了许多可以随时使用的预建分析器。或者您可以组合内置的字符过滤器编译 器和过滤器器来创建自定义分析器 过滤器过滤器Filters是一种用于在查询中筛选文档的强大工具。过滤器可以根据特定条件来评估文档是否符合搜索查询。这些条件通常应用于字段数据并根据匹配结果返回符合条件的文档。 在Elasticsearch中有多种类型的过滤器可供使用包括 类型过滤器Type Filter根据文档的类型进行过滤仅返回符合特定类型的文档。 范围过滤器Range Filter根据特定范围的字段值进行过滤。 关键字过滤器Keyword Filter用于匹配特定文本的过滤器。 布尔过滤器Boolean Filter允许根据布尔表达式组合多个过滤条件。 复合过滤器Composite Filter将多个过滤条件组合在一起以实现更复杂的筛选逻辑。 10. es的更新是怎么操作的 在Elasticsearch中更新操作可以分为两种情况:更新和替换。 更新(Update):更新操作是对文档的字段进行修改而不是替换整个文档。当更新一个文档时Elasticsearch会加载原始文档的源数据并根据更新请求对字段进行修改。修改后的文档会被保存到倒排索引中并生成一个新的版本号。 替换(Replace):替换操作是用新的文档替换原始的文档。当替换一个文档时Elasticsearch会直接将新文档保存到倒排索引中并生成一个新的版本号。这种操作会比更新操作更加耗时因为需要将整个文档写入磁盘。 Elasticsearch的更新机制包括以下步骤 检查文档的版本号在更新过程中Elasticsearch会检查文档的版本号。每个文档都有一个唯一的版本号用于标识文档的修改历史。当一个更新请求到达Elasticsearch时它将文档的版本号与请求中携带的版本号进行比较如果不一致则返回一个版本冲突的错误。如果版本号一致则Elasticsearch会进行更新操作。加载源数据在更新过程中Elasticsearch会将文档的源数据加载到内存中并进行字段的修改。生成新的版本号Elasticsearch会为修改后的文档生成一个新的版本号并将其保存到倒排索引中。乐观并发控制Elasticsearch采用乐观并发控制机制可以在并发更新的情况下保证操作的一致性和可靠性。同时由于不需要加锁等额外开销这种机制也能够提高系统的性能和吞吐量。处理并发更新冲突当多个并发更新操作到达Elasticsearch时它们会依次执行并依次检查版本号。如果版本号一致则允许更新操作执行如果版本号不一致则会返回一个版本冲突的错误。在出现版本冲突的情况下一般有两种处理方式重试Retry和替换Replace。重试操作可以等待一段时间再重新发送更新请求或者通过修改更新请求中的版本号来避免冲突。 并发更新的冲突处理 在高并发的场景下可能会出现多个并发更新操作冲突的情况。Elasticsearch会通过版本号来解决这个问题。当多个并发更新操作到达Elasticsearch时它们会依次执行并依次检査版本号。如果版本号一致则允许更新操作执行;如果版本号不一致则会返回一个版本冲突的错误。 在出现版本冲突的情况下一般有两种处理方式: 重试(Rctry):可以在发生版本冲突后进行重试操作。重试操作可以等待一段时间再重新发送更新请求或者通过修改更新请求中的版本号来避免冲突。通过重试可以解决版本冲突但可能会造成额外的延迟和资源消耗。使用乐观并发控制机制(Optimistic Concurrency Control):在更新操作中采用乐观并发控制机制可以避免版本冲突并提高系统的性能和吞吐量。乐观并发控制机制通过比较版本号来确定是否允许更新操作并采用更新操作的方式将文档保存到倒排索引中。 11. es的删除是怎么操作的 删除操作的执行流程: 客户端向Elasticsearch发送一个删除请求包含要删除的文档的D。Elasticsearch接收到删除请求后会首先检查要删除的文档是否存在。如果文档不存在则返回一个错误响应。如果文档存在Elasticsearch会将要删除的文档的标识信息添加到删除列表中。当删除列表中的标识信息达到一定数量或者删除列表的大小达到一定阈值时Elasticsearch会触发一个合并操作。在合并操作中Elasticsearch会将删除列表中的标识信息应用到倒排索引中将对应的文档标记为已删除状态。合并操作完成后Elasticsearch会返回一个成功响应给客户端。 合并操作的原理合并操作是将删除列表中的标识信息应用到倒排索引中的过程。下面是合并操作的原理: Elasticsearch会将倒排索引分成多个段(segment)每个段包含一部分文档的索引信息。当删除列表的大小达到一定阈值或者删除列表中的标识信息达到一定数量时Elasticsearch会触发一个合并操作。在合并操作中Elasticsearch会选择一些段进行合并。合并的目的是将多个段合并成一个较大的段从而提高搜索性能。在合并的过程中Elasticsearch会将删除列表中的标识信息应用到倒排索引中将对应的文档标记为已删除状态。合并操作完成后Elasticsearch会生成一个新的段包含合并后的索引信息并将该段添加到倒排索引中。合并操作完成后删除列表会被清空以便下一次的删除操作。 在使用Elasticsearch进行删除操作时有一些注意事项需要考虑: 删除操作并不是直接从磁盘上删除文档不立即生效而是将文档标记为已删除状态所以在搜索时已删除的文档仍然可以被返回。这是因为Elasticsearch采用了一种称为倒排索引的数据结构来存储文档。倒排索引是一种将文档中的每个词映射到包含该词的文档的数据结构。物理删除:如果需要完全从磁盘上删除文档可以使用Elasticsearch的物理删除API。物理删除操作会从磁盘上删除文档的索引信息但需要注意的是该操作会导致索引变得不可用需要重新构建索引。自动合并:当执行删除操作时Elasticsearch会将要删除的文档的标识信息(比如文档的I)添加到一个被称为删除列表(deletelist)的数据结构中Elasticsearch会自动触发合并操作将删除列表中的标识信息应用到倒排索引中。但是如果删除列表的大小较小或者删除操作较少合并操作可能会较少触发从而导致已删除的文档占用较多的磁盘空间。可以通过调整合并策略和手动触发合并操作来解决这个问题。 12. es是怎么实现搜索的 连接到集群首先客户端需要连接到Elasticsearch集群。这通常可以通过配置代理服务器或直接连接Elasticsearch实例来完成。执行查询一旦连接到集群客户端可以使用适当的查询语言如Elasticsearch查询语言或REST API来发送搜索请求。查询可以根据需求进行定制例如使用过滤器、聚合、排序等。路由与寻址一旦接收到搜索请求集群中的节点会根据请求中的查询条件和索引信息确定需要搜索的索引和分片。这个过程涉及到路由和寻址以确保请求被发送到正确的节点上。分片选择和请求转发在确定了要搜索的分片后协调节点会根据分片副本选择一个主分片或一个副本分片来执行搜索操作。协调节点会将搜索请求转发给选定的分片。执行搜索计划在分片上搜索计划被执行。这个阶段包括对文档进行过滤、排序、聚合等操作以生成匹配的文档列表。获取结果在执行搜索计划后获取阶段开始。在获取阶段中从匹配的文档中提取相关的信息例如文档ID和相关统计信息并将这些信息返回给协调节点。返回结果协调节点将接收到的结果返回给客户端。客户端可以获取和处理这些结果以展示最终的搜索结果。结束处理在完成一次搜索请求后关闭与集群的连接结束整个搜索过程。 13. es是怎么保证读写一致的 Elasticsearch 提供了乐观并发控制机制来保证读写一致性。具体来说当文档被更新时它会检查文档的版本号是否与请求中提供的版本号一致。如果版本号一致则更新操作成功否则更新操作失败返回文档的当前版本号。这种机制可以防止多个并发操作对同一文档进行修改从而保证读写一致性。 Elasticsearch 还提供了写一致性级别包括 quorum、one 和 all。默认情况下写操作需要在大多数分片可用时才允许执行。这意味着如果大多数分片可用则更新操作可以成功执行否则更新操作将失败。这种机制可以确保在分布式环境下数据的一致性得到维护。 在读操作方面Elasticsearch 支持同步和异步读取。默认情况下读取操作会在主分片和副本分片都完成后才会返回结果。这可以确保读取的数据是最新的。此外可以通过设置搜索请求参数 _preference 为 primary 来查询主分片以确保文档是最新版本。 14. es的分页方法有哪几种 from-size分页它通过指定起始位置from和查询结果数量size来获取数据。 在from-size分页中from参数指定了返回结果集的起始位置而size参数指定了返回结果集的长度。默认情况下Elasticsearch中的from-size分页起始位置from为0查询结果数量size默认为10。 当需要查询第n页数据时可以通过计算偏移量来指定起始位置。假设每页显示10条数据那么第n页的起始位置可以通过n-1*10来计算。例如要查询第2页的数据可以将from设置为10size设置为10。 需要注意的是 当查询大量数据时使用from-size分页可能会对性能产生影响。因为Elasticsearch需要对整个结果集进行排序和过滤然后再返回指定位置的数据。为了避免性能问题可以考虑使用search_after分页方式它基于上一页的最后一条数据来确定下一页的位置避免了深度分页带来的性能问题。当使用from-size分页时需要注意返回的数据量不能超过Elasticsearch的限制。默认情况下Elasticsearch中的最大查询结果数量为10,000条。如果需要查询的数据量超过了这个限制可以考虑使用scroll API进行滚动查询 search_after分页search_after分页方式是一种基于上一页的最后一条数据来确定下一页的位置的分页方式。 在search_after分页中需要设置from参数为0并使用上一页返回的最后一条数据的sort属性值作为参数传入到search_after中。这样可以确保下一页的数据从上一页的最后一条数据之后开始查询。 需要注意的是为了使用search_after分页方式每个文档必须有一个全局唯一值官方推荐使用_uid作为全局唯一值。另外在查询时需要根据排序条件设置sort参数以便正确地找到上一页的最后一条数据。 scroll 深翻页scroll API使用一个全局深度翻页的操作首次请求会返回一个scroll_id使用该scroll_id可以顺序获取下一批次的数据。 scroll API的具体使用步骤如下 发送一个搜索请求并在请求中指定scroll参数该参数指定了滚动搜索的时间默认为1分钟。返回的结果中除了正常的搜索结果外还会返回一个scroll_id。这个scroll_id可以用于在后续的请求中继续搜索。当需要获取下一批次的搜索结果时发送一个新的搜索请求并使用上一次返回的scroll_id作为参数。重复步骤3直到没有更多的结果可以返回。 需要注意的是scroll API只能用于处理大量数据的翻页查询它可以提高查询性能并避免深度分页带来的性能问题不能用于实时查询。另外由于滚动搜索会一直保持一个开启的连接因此需要确保在使用滚动搜索时不要忘记关闭连接否则可能会导致资源泄漏。 15. es的缓存的原理缓存大小对使用有影响么 文件系统缓存页缓存当Elasticsearch需要读取某个文档时它首先会尝试从页缓存中获取该文档的数据块。如果页缓存中不存在该数据块则会从硬盘中读取该数据块并缓存在页缓存中。这样在下次需要读取该文档时可以直接从缓存中获取避免了磁盘IO操作提高了查询效率。 需要注意的是页缓存是操作系统级别的缓存而不是Elasticsearch自身的缓存机制。因此页缓存的大小和配置取决于操作系统的设置和硬件资源 分片缓存Shard request cache ES会将数据分散到多个分片中并在查询时指定分片和副本。当查询一个分片时ES会将该分片的数据缓存在内存中并在后续的查询中直接从缓存中读取数据避免了重复的磁盘IO操作。分片级别的缓存并不会将整个索引的结果都缓存起来而是根据数据的访问频率和数据量大小等因素来动态调整缓存的大小和过期时间等参数。同时为了保持数据的一致性和避免脏读等问题Elasticsearch也会对缓存进行同步更新和清理操作。默认情况下Shard Request Cache只会缓存查询中参数size0的搜索请求的结果因此不会缓存hits但会缓存hits.total、aggregations聚合和suggestions。因此Shard Request Cache非常适合日志用例场景在这种情况下数据不会在旧索引上更新并且可以将常规聚合保留在高速缓存中以供重用。这种缓存机制可以有效地提高查询效率特别是对于频繁访问的搜索请求。然而当索引数据发生变化时缓存会失效。因此在使用Shard Request Cache时需要考虑数据更新的频率和查询负载等因素合理配置缓存大小和缓存策略。 查询缓存Filter Cache/Query Cache用于对一个查询中包含的过滤器执行结果进行缓存。当查询结果被缓存后后续的相同查询可以直接从缓存中获取结果无需重新计算。Query Cache对满足某些条件的查询结果进行缓存例如Term、Range过滤器和特定的聚合结果。Query Cache的主要作用是减少对索引的搜索成本提高查询效率。 需要注意的是ES的缓存机制是自动的不需要用户手动配置。ES会自动根据数据的访问频率和数据量大小等因素来调整缓存的大小和过期时间等参数。同时为了保持数据的一致性和避免脏读等问题ES也会对缓存进行同步更新和清理操作。 缓存大小对使用有影响 缓存大小对Elasticsearch的使用有一定影响。缓存是用于存储经常访问的数据以便快速响应查询请求提高查询效率。因此缓存大小的设置应该根据实际应用的需求和硬件资源进行合理配置。 如果缓存设置得太小无法容纳足够的数据量会导致缓存命中率较低需要频繁地访问磁盘IO从而影响查询性能。而如果缓存设置得太大会占用更多的内存资源可能会导致其他应用或系统资源受到限制。 因此需要根据实际应用的特点和数据量大小合理设置缓存大小。可以通过监控Elasticsearch的性能指标如查询响应时间、缓存命中率等来调整缓存大小以达到最佳的性能表现。同时也需要考虑硬件资源的限制如可用内存的大小以确保系统的稳定性和性能。 16. es什么请求不能被缓存 当segment的文档数量小于10000或者小于总index数量的3%时查询是不会缓存的。使用了scroll滚动查询。查询类型不是QUERY_THEN_FETCH。带有分析的查询设置了profile属性。不需要缓存的情况。范围查询中带有now的。TermQuery这种查询用于查找文档中包含特定词项的字段。MatchAllDocsQuery这种查询用于匹配索引中的所有文档。MatchNoDocsQuery这种查询用于在没有任何文档满足给定条件的情况下使用。BooleanQuery这种查询用于组合多个查询条件通过逻辑运算符如AND、OR、NOT来组合多个查询条件。DisjunctionMaxQuery这种查询用于在多个字段上执行相同的查询并返回匹配任意字段的文档。当BooleanQuery的字节点为空时不会被缓存当DisMaxQuery的Disjuncts为空时不会被缓存。对于历史查询次数有要求对于消耗高昂的Query只需要2次就加入缓存其他的默认是5次对于BooleanQuery和DisjunctionMaxQuery次数为4次。 TermQuery、MatchAllDocsQuery、MatchNoDocsQuery、BooleanQuery、DisjunctionMaxQuery这些查询类型在Elasticsearch中被标记为not cacheable意味着它们的查询结果不会被缓存每次查询都需要重新计算和获取数据。这主要是因为这些查询通常涉及到特定的条件或逻辑不适合直接从缓存中获取结果。 17. es优化查询的手段是什么 索引优化在查询频繁的字段上建立索引并使用合适的索引类型如text、keyword等和设置如分析器、字段大小等以减少索引的体积和加快查询速度。此外还可以通过合并索引段、优化刷新和合并操作等来提高索引性能。分区和分片将数据分散到多个分片中并在查询时指定分片和副本。合理配置分片和副本的数量可以平衡数据分布和查询负载提高查询效率。缓存利用ES的查询缓存功能将经常查询的结果缓存起来避免重复计算和减少IO操作。合理配置缓存的大小和过期时间可以提高缓存命中率并加快查询速度。使用合适的查询语句避免使用过于复杂的查询语句如没有明确限制条件的范围查询或嵌套查询等。尽量使用简单、明确的查询语句并利用ES的聚合和过滤功能来减少数据量。硬件和性能优化使用高性能的硬件资源如多核CPU、大容量内存和高速磁盘等。同时对ES进行性能调优如调整JVM内存大小、优化GC算法等。数据预热在查询之前通过预加载或预热数据的方式将常用的数据提前加载到缓存中提高缓存命中率并加快查询速度。使用ES集群通过将数据分散到多个ES节点上可以提高系统的可扩展性和容错性。合理配置节点数量、分片和副本数量可以平衡数据分布和查询负载提高查询效率。 18. es怎么批量导入数据 批量操作是通过_bulk API实现的它允许你一次性执行多个索引、删除、更新或创建操作。_bulk API的请求体使用JSON格式其中包含多个操作。每个操作都由一个操作类型和一个请求体组成。 以下是一个_bulk请求的示例语法 POST /_bulk { operations : [ { index : { _index : test, _id : 1 } } { field1 : value1 } , { delete : { _index : test, _id : 2 } } ] }在上面的示例中operations数组包含了多个操作。第一个操作是一个index操作用于将一个文档插入到名为test的索引中文档的ID为1字段field1的值为value1。第二个操作是一个delete操作用于删除索引test中ID为2的文档。 请注意每个操作都需要单独定义并在每个操作之间添加一个逗号和一个换行符。此外还可以定义其他操作如update和create等 在Java中使用Elasticsearch Java REST Client进行批量操作的示例代码如下 import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import java.io.IOException; import java.util.List; public class BulkImportDemo { public static void main(String[] args) throws IOException { try (RestHighLevelClient client new RestHighLevelClient( RestClient.builder(new HttpHost(localhost, 9200, http)))) { // 创建bulk请求 BulkRequest bulkRequest new BulkRequest(); // 添加index操作 IndexRequest indexRequest new IndexRequest(test); indexRequest.id(1); indexRequest.source({ \field1\ : \value1\ }, XContentType.JSON); bulkRequest.add(indexRequest); // 添加delete操作 bulkRequest.add(new DeleteRequest(test, 2)); // 发送bulk请求 BulkResponse bulkResponse client.bulk(bulkRequest, RequestOptions.DEFAULT); if (bulkResponse.hasFailures()) { // 处理失败的操作 ListBulkItemResponse failures bulkResponse.getItems(); for (BulkItemResponse failure : failures) { System.out.println(Failed operation: failure.getOpType() - failure.getFailureMessage()); } } else { // 批量导入成功 System.out.println(Bulk import completed successfully.); } } catch (IOException e) { e.printStackTrace(); } } }19. es的文本相似度TF-IDF是什么 简单地说就是你检索一个词匹配出来的文章网页太多了。比如 1000 个这些内容再该怎么 呈现哪些在前面哪些在后面。这需要也有个对匹配度的评分。 是一种基于统计的文本处理方法用于评估一个词在特定文档中的重要程度。其原理可以概括为将一个词在文档中出现的次数Term FrequencyTF与该词在语料库中出现的次数Inverse Document FrequencyIDF相乘得到该词在该文档中的TF-IDF值。 TF-IDF的具体计算方法如下 计算词频TF一个词在文档中出现的次数除以文档的总词数得到该词在文档中的词频。词频越高说明该词在文档中的重要性越高。计算逆文档频率IDF一个词在语料库中出现的次数除以语料库的总文档数取对数得到该词的逆文档频率。逆文档频率越大说明该词越稀有越具有区分度。将TF和IDF相乘得到该词在文档中的TF-IDF值。TF-IDF值越大说明该词在文档中的重要性越高。 通过TF-IDF算法可以将文档中的词进行权重化处理从而为后续的文本分类、聚类和信息检索等任务提供更有价值的特征信息。 20. 如何实现es的master选举的 Elasticsearch的master节点是集群中的主节点负责管理集群状态和路由请求。在Elasticsearch中master选举是通过集群内部的节点之间进行通信和协商来实现的。 步骤 配置节点在每个Elasticsearch节点上需要配置cluster.name参数以便将节点分配给正确的集群。此外需要设置node.master参数为true以指定该节点作为master节点候选。节点启动启动每个Elasticsearch节点时它会尝试与其他已知的节点进行通信。每个节点都会发送一个“我是一个master”的消息并等待其他节点的响应。投票选举每个节点都会检查它与其他节点的通信并确定哪些节点可以被选为master。如果一个节点收到了来自大多数节点的“我是master”的消息那么它将认为自己是master节点。确认选举一旦一个节点被选为master它会发送一个“我是master”的消息给其他节点并等待其他节点的确认。如果其他节点也认为该节点是master那么选举过程就完成了。维护选举如果master节点出现故障或不可达其他节点将重新进行选举并选出新的master节点。选举过程是自动的并且会持续进行以确保集群始终有一个可用的master节点。 需要注意的是Elasticsearch的master选举是自动的并且不需要手动干预。此外为了确保集群的稳定性和可用性建议在生产环境中使用多个master节点并将它们配置为热备或冷备状态。这样可以减少单点故障的风险并提高集群的可靠性。 21. 如果多个节点都向其他节点发送我是主master的信息。那么其他节点是怎么确定一个节点是主master的 其他节点确定一个节点为主master的方式是通过比较节点的优先级。优先级可以通过多种方式设置例如通过节点的IP地址或通过配置文件中的优先级值。在选举过程中具有最高优先级的节点将被选为主master。如果多个节点具有相同的优先级则根据节点的ID进行比较ID较小的节点将成为主master。如果ID也相同则根据时钟时间进行比较时间较早的节点将成为主master。 22. es的api是什么 Elasticsearch Java REST Client它是官方的Java客户端提供了与Elasticsearch进行交互的API。使用该库可以方便地执行各种API操作如检索、索引管理、数据更新等。 23. elk你了解么 ELK是三个开源软件的缩写分别是Elasticsearch、Logstash和Kibana。它们都是开源软件用于构建实时日志分析系统。 Elasticsearch是一个分布式搜索和分析引擎可以用于全文搜索、结构化搜索以及分析。它基于Apache Lucene构建使用Java编写支持RESTful风格的API。Logstash是一个具有实时传输能力的数据收集引擎用于收集、解析和传输数据。它可以用于日志管理、数据采集等场景支持多种数据源和输出方式。Kibana可以为Logstash和Elasticsearch提供分析和可视化的Web平台支持在Elasticsearch的索引中查找、交互数据并生成各种维度表格、图形。 这三个开源软件可以一起使用形成一个完整的日志分析系统。Logstash可以从各种来源获取数据经过处理后将其发送给Elasticsearch进行存储和搜索而Kibana则提供了可视化和查询界面方便用户查看和分析数据。 ELK系统的主要优势在于其可扩展性、灵活性和可靠性。它可以根据需求进行定制和扩展支持大量的数据采集、处理和存储并提供实时的分析和可视化功能。同时由于这三个软件都是开源的用户可以根据需要自由选择和修改代码以满足特定的需求。 总之ELK是一个强大而灵活的日志分析解决方案广泛应用于日志管理和数据分析领域。它可以为开发者和企业提供实时的数据分析和可视化工具帮助其更好地理解应用程序和系统的运行状况。 24. 你公司es的集群是怎么配置的 面试官:想了解应聘者之前公司接触的 ES 使用场景、规模有没有做过比较大规模的索引设计、规划、调优。实结合自己的实践场景回答即可。 前提四个月导入800w条数据日增20w30列 es 的版本Elasticsearch 6.x2019年发布该版本在性能和稳定性方面进行了改进同时引入了新的功能和改进包括Ingest Node, Split and Merge API等 es有几个节点 至少3个 在几个服务器上3个 几个分片5个主分片 几个副本分片每个主分片至少一个副本 内存是多大的至少16GB推荐32GB 索引数据的大小每天每个索引大小控制在150GB 数据节点开始配置3-5个根据增长情况逐步扩展 协调节点查询负载过高可以设置1-2个 25. es的使用场景为什么要选es作为搜索引擎 全文搜索Elasticsearch是一个功能强大的全文搜索引擎可以高效地处理大量文本数据并提供了强大的搜索和分析功能。结构化数据搜索除了全文搜索Elasticsearch也可以用于搜索结构化数据。通过使用Elasticsearch的查询DSL领域特定语言可以轻松地构建复杂的查询条件实现对结构化数据的快速检索。实时分析Elasticsearch提供了强大的聚合功能可以对数据进行实时分析。通过使用聚合操作可以对大量数据进行统计、分组、排序等操作从而得到需要的结果。分布式系统Elasticsearch是分布式搜索和分析系统可以处理大规模数据集并且能够自动进行负载均衡和分片处理。数据仓储和数据挖掘Elasticsearch可以作为数据仓库和数据挖掘工具使用通过缓存数据和减少对磁盘的IO操作可以提高数据查询和分析的效率。实时日志分析Elasticsearch可以用于实时日志分析通过实时收集、存储和分析日志数据可以帮助开发人员和运维人员快速定位和解决问题。推荐系统基于Elasticsearch的推荐系统可以通过分析用户的行为和兴趣为用户提供个性化的推荐服务。 26. es的聚合操作指的是什么 ES的聚合操作指的是在搜索数据的基础上进行的一种数据分析操作。它可以对搜索结果进行分组、排序、过滤和计算从而得出具有统计意义的结果。 具体来说聚合操作可以用于以下方面 桶聚合将数据分成不同的组并对每个组进行统计。例如对某个字段进行桶聚合可以得出每个桶中的数据量、平均值、最大值、最小值等统计信息。指标聚合对数据进行统计和计算得出具有统计意义的指标。例如计算某个字段的平均值、求和、最大值、最小值等。过滤操作在聚合过程中可以使用过滤器对数据进行筛选只对符合条件的文档进行聚合。 多值聚合返回多个值例如分组计数、分段统计等。 27. es写入异常或者写入缓慢怎么排查解决 内存参数配置不合理是否给Elasticsearch实例足够的内存如果内存足够的话建议配置30GB每个Elasticsearch数据实例节点。 bulk提交量过大导致内存被堆满一次提交的bulk数量不宜过大实践证明5-10MB左右大小合适。 客户端IP端口配置问题因为Elasticsearch的客户端采用的是轮询的方式所以尽量配置所有节点的IP、端口或者开启嗅探功能。 写入时指定DOC ID导致读IO高写入时指定DOC ID意味着首先需要判断ID是否重复如果在大数据量的场景下可能会需要从磁盘进行一次读操作从而占用大量的磁盘IO导致写入速度慢。 bulk队列积压请求线程被拒绝大量的bulk队列被等待或者积压导致线程被拒绝这时候需要适当降低业务请求的并发量。 热分片问题单个索引的分片集中分布在某几个机器节点上导致写入压力无法均匀地分布到各个机器节点上形成阻塞的问题。 集群不稳定大量分片迁移和恢复如果你的集群处于不稳定的状态比如有大量的分片在做均衡迁移或者恢复都会占用大量的资源导致写入资源被占用。 部分实例长时间不断的full gc导致实例处于假死状态部分场景下数据实例处于长时间不断的full gc但此时并没有完全脱离集群写入请求仍然往这个节点发送此时节点已经无法处理了。快速解决办法重启问题实例。 磁盘IO瓶颈当磁盘出现IO瓶颈能怎么办呢换更好的盘或者扩容吧。 查询业务占用大量的资源高并发的查询或者大数据的查询可能会占用大量的资源此时需要衡量你的系统侧重点了实在不行扩容吧。 索引段合并占用大量的IO资源索引段合并太频繁同样会占用大量的IO资源如果不是SSD盘将索引段合并线程设置为1。 分词器设计不合理不同的分词对写入影响很大分词器设计不合理可能会存在大量的CPU计算和过度分词等问题。 28. es 一共5m的存储空间你存了4m还想存3m怎么存 清理旧数据首先你可以考虑清理一些旧的、不再需要的数据以释放存储空间。这可以通过删除旧索引或者使用_delete_by_query API来删除匹配特定条件的文档。增加存储空间如果清理旧数据无法满足存储需求你可以考虑增加更多的存储空间。这可以通过添加更多的节点或者在现有节点上增加更多的磁盘空间来实现。优化索引设置如果存储空间仍然不足你可以考虑优化索引的设置。例如可以调整分片数量、副本数量等参数以更好地利用存储空间。使用压缩Elasticsearch支持对索引数据进行压缩以减少存储空间的需求。你可以使用默认的压缩算法或者自定义的压缩算法来压缩数据。 29.为了保证线上可用导入的时候是怎么操作的 数据备份在进行数据导入之前先对原始数据进行备份以防止数据丢失或导入过程中出现意外情况。导入工具选择选择合适的导入工具如Logstash、Filebeat等这些工具可以帮助你高效地导入数据到Elasticsearch中。分批导入将数据分批导入而不是一次性导入所有数据。这样可以减少单次导入的数据量减轻系统压力并提高导入的稳定性和成功率。限流控制在数据导入过程中可以使用限流控制来限制写入速率。这样可以避免对Elasticsearch集群造成过大的负载保证系统的稳定性。健康检查在导入过程中定期检查Elasticsearch集群的健康状态包括节点的CPU、内存、磁盘等资源使用情况以及索引的状态等。如果发现异常情况可以及时进行处理。回滚机制在数据导入过程中如果发现错误或异常可以回滚到之前的状态重新进行数据导入。这样可以保证数据的完整性和一致性。监控与日志使用Elasticsearch提供的监控工具和日志分析工具实时监控集群的状态和日志信息。这样可以及时发现和解决问题保证导入过程的顺利进行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创新的o2o网站建设制作wordpress页面模板

一、名词解释 Device ID:设备ID。 IMEI:(International Mobile Equipment Identity)国际移动设备标识的缩写。是由15位数字组成的“电子串号”,它与每台手机一一对应,每个IMEI在世界上都是唯一的。 MEID…

仿站小工具wordpress域名网站模板

题目 输入样例: 5 2 1 2 3 4 5输出样例: 6 思路 本题默认所有读者已经理解了如何求前缀和。 可以利用双层循环分别枚举左端点和右端点即可枚举完所有区间,而对于每个区间,利用一维前缀和判断它是否是一个k倍区间,是…

海口网站建设交易网站建设具体方案

目录 1 添加修改运费模板 2 删除运费模板 3 是否有商品使用过改运费模板 /// <summary> 添加修改运费模板 /// </summary>

海洋网站建设网络闵行区天气

echarts在HTML里测试正常&#xff0c;在jsp页面不显示&#xff0c;而且还把整个页面变成空白echarts在HTML里测试正常&#xff0c;在jsp页面不显示&#xff0c;而且还把整个页面变成空白&#xff0c;请大神帮忙&#xff0c;急&#xff0c;在线等Created by IntelliJ IDEA.User:…

包头建网站公司哪家强销售类网站数据库的建设

一、Ajax初始 1、什么是Ajax&#xff1f; 异步的JavaScript和xml 2、xml是什么&#xff1f; 一种标记语言&#xff0c;传输和存储数据----------现在用JSON传输数据 3、Ajax的作用 局部加载 可以使网页异步更新 4、Ajax的原理或者步骤(6步) 创建Ajax对象 if (window.X…

视频网站为什么有人做随便来一个公司邮箱

RRDtool作为一个合格的运维工程师&#xff0c;监控技能必须是要掌握的&#xff0c;当然监控的软件很多很多(cacti,nagios,zabbix...)。而生产环境中一般只运用1、2种而已。所以全部掌握这些有点不靠谱。所以选择其中一种掌握之即可&#xff0c;当工作环境变化后还可以以之为跳板…

标准件做啥网站wordpress主题标签关键词

2023已悄然过去&#xff0c;还记得跨年夜那天&#xff0c;我突然接到一星期要期末考的消息&#xff0c;我的内心是多么奔溃&#xff0c;先不说一天一门强度如此之高&#xff0c;重要的是矩阵论&#xff0c;工程优化等等科目&#xff0c;还要速成&#xff0c;于是麻木得预习一日…

零基础自己建网站网站采用哪种开发语言

2017年3月26日晚间&#xff0c;农业银行发布了2017年的年报。数据显示&#xff0c;2017年农业银行实现营业收入5428.98亿元&#xff0c;同比增长6.42%&#xff0c;净利润1929.62亿元&#xff0c;同比增长4.9%&#xff0c;截至2017年末&#xff0c;农业银行总资产21.05万亿元&am…

wordpress站点logo腾讯云服务器控制台

71. Kotlin中的@Metadata注解介绍以及生成流程 ?kotlin中的@Metadata注解是一个很特殊的注解,它记录了Kotlin代码中的一些信息,比如 class 的可见性,function 的返回值,参数类型,property 的 lateinit,nullable 的属性,typealias类型别名声明等。 我们都知道Kotlin代码…

建网站新科网站建设修改wordpress logo

目录&#xff1a; linux系统与shell环境准备 Linux系统简介操作系统简史Linux的发行版&#xff1a;Linux与Windows比较&#xff1a;Linux安装安装包下载Linux的访问方式远程登录方式远程登录软件&#xff1a;mobaxterm的使用&#xff1a;使用电脑命令行连接&#xff1a;sshd的…

网站管理权限怎么进去家教网站如何做

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

广东官方网站建设sns社交网站开发教程

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 先抄作业&#xff01;&#xff01;&#xff01;&am…

网站怎么做图片动态中扶建设网站

在人工智能领域&#xff0c;大语言模型&#xff08;LLMs&#xff09;已经成为推动语言理解和生成任务进步的重要力量。随着模型规模的不断扩大&#xff0c;如何优化这些模型的计算效率成为了一个迫切需要解决的问题。大型语言模型通常包含数十亿甚至数千亿的参数&#xff0c;这…

响应式网站建设公司网站建设策划书模板

1、CloseChannel() 功 能:关闭先前用OpenChannel()函数打开的DDE服务器的通道。 语 法:CloseChannel ( handle {, windowhandle } ) 参 数:handle:long类型,通道句柄,指明要关闭的DDE通道; windowhandle:long类型,可选项,指明用做DDE客户的PowerBuilder窗口的…

物流业网站建设方案实验总结服务公司英文

问题描述&#xff1a;我mac电脑上有高低2个版本的flutter sdk&#xff0c;我需要低版本sdk的项目在setting里设置了sdk版本&#xff0c;可是命令行还是提示我版本过高。 直接上解决办法&#xff1a; 打开mac终端&#xff0c;输入open -e .bash_profile&#xff0c;然后修改下…

wordpress公司展示网站模板做和别人类似的网站侵权吗

目录 一、大数据时代二、云计算——大数据的计算三、云计算发展现状四、云计算实现机制五、云计算压倒性的成本优势 一、大数据时代 我们先来看看百度关于 “大数据”&#xff08;Big Data&#xff09;的搜索指数。 可以看出&#xff0c;“大数据” 这个词是从2012年才引起关注…

有哪些网站可以做笔译那个网站做效果图电脑配置

目录 Future1、基本介绍2、按照提交任务的顺序获取执行结果 CompletionService1、介绍2、按照任务完成的先后顺序获取结果 CompletableFuture1、介绍2、CompletableFuture怎么非阻塞的获取任务结果 Future 1、基本介绍 Future是JDK1.5 提供的接口&#xff0c;是用来以阻塞的方…

网站内容建设情况东营网站建设运营公司

安装React Dev Tool Context对象.displayName 使用别名 不使用别名 React.createContext 创建指定的Context对象组件会找离自己最近的Provider&#xff0c;获取其value变量名都叫value的情况&#xff0c;就近取AContext变量名有所区分&#xff0c;两个value都可以获取可以…

做淘宝有哪些货源网站网站从哪些方面做优化

在网上搜了一下并没有什么好的解决方案&#xff0c;有的话也只是告诉你如何修改代码&#xff0c;并没有讲明白其中的原理以及导致问题的核心&#xff0c;因此特意去了解了一下HTTP的规范找到了答案 问题说明 问题出现的流程大致都是前端发送Ajax请求给后端&#xff0c;进行一些…

邵阳做网站的有哪些视频结交网站怎么做

一、概述 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程&#xff0c;具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。 二、概念及原理 应用程序通过系统调用与…