云服务器内容精选

  • CSS服务中如何清理Elasticsearch索引数据? 自动化定期清理 可以写定时任务调用清理索引的请求,定期执行。CSS支持Opendistro Index State Management,可以参考案例通过索引生命周期实现索引存算分离设置定期清理数据。 Opendistro Index State Management的详细说明请参见:https://opendistro.github.io/for-elasticsearch-docs/docs/im/ism/ 手动清理 登录Kibana,在Dev tools里执行DELETE /索引名命令。 登录Cerebro,过滤检索出目标索引名,单击索引名称,选择“delete index” 并在弹框中选择 “Confirm”。 图1 Cerebro删除索引 父主题: CSS集群搜索引擎使用
  • CS S服务中如何清理Elasticsearch缓存? 清理fielddata 进行聚合和排序时,会使用fielddata数据结构,会占用较大内存。 在Kibana执行如下命令,查看scroll_id值。 GET my_index/_search/?scroll=1m 执行如下命令查看索引的fielddata占用情况。 DELETE /_search/scroll { "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" } 当fielddata占用内存过高时,可以执行如下命令清理fielddata。 POST /test/_cache/clear?fielddata=true “test”为fielddata占用内存较高的索引名称。 清理segment 每个segment的FST结构都会被加载到内存中,并且这些内存是不会被垃圾回收的。因此如果索引的segment数量过大,会导致内存使用率较高,建议定期进行清理。 在Kibana执行如下命令,查看各节点的segment数量和占用内存大小。 GET /_cat/nodes?v&h=segments.count,segments.memory&s=segments.memory:desc 如果segment占用内存过高时,可以通过删除部分不用的索引、关闭索引或定期合并不再更新的索引等方式释放内存。 清理cache 在Kibana执行如下命令清理cache。 POST _cache/clear 父主题: CSS集群搜索引擎使用
  • CSS服务的Elasticsearch集群是否支持script dotProduct? 使用向量功能时,由于原生Elasticsearch向量功能是在x-pack插件中,目前 云搜索服务 没有集成x-pack组件。因此,Elasticsearch集群原生的script dotProduct无法执行。 建议您使用 云搜索 服务自研的向量检索功能。云搜素服务基于自研的向量搜索引擎,结合Elasticsearch的插件机制,高效集成了向量检索能力,能够同时满足高性能、高精度、低成本、多模态等多种高维向量检索场景。更多信息请参向量检索。 向量检索功能支持7.6.2和7.10.2版本的集群。 父主题: CSS集群搜索引擎使用
  • 原因分析 新建索引分片被集中分配于一个node节点上可能有以下原因: 之前索引的分配导致某个节点上的shards数量过少,新建索引shards分配被balance.shard参数主导,为了平衡所有索引的全部分片,将shards集中分配在数量过少的节点上。 节点扩容,当新节点加入时新节点上的shards数量为0,此时集群会自动进行rebalance,但是rebalance需要时间,此时新建索引很容易会被balande.shard参数主导,平衡所有索引的分片,即都分配在新节点上看起来更加平衡。 涉及集群平衡性shard分配主要有两个配置参数: cluster.routing.allocation.balance.index(默认值0.45f) cluster.routing.allocation.balance.shard(默认值0.55f) “balance.index”:值越大,shard分配越倾向于使得每个索引的所有分片在节点上均匀分布,如a索引共有6个shards,数据节点有3个,该配置值倾向于让a索引2、2、2平衡分配。 “balance.shard”:值越大,shard分配越倾向于使得所有分片(所有索引的)在节点上平衡,如索引a有2个shards,索引b有4个shards,该配置倾向于所有6个分片进行2、2、2平衡分配。 balance.index和balance.shard共同负责shards分配。
  • 解决方案 当新建的索引分片被全部分配在一个node节点上时,有以下2种解决办法: 扩容集群需要新建索引时,按照如下所示设置对应参数。 PUT INDEX_NAME/_settings { "index.routing.allocation.total_shards_per_node": 2 } 即单个索引在每个节点上最多分配2个shards。其中,具体每个节点最多分配多少个shards,请根据集群数据节点个数、索引分片(主、副)的数量自行决定。 如果是shards集中分配在数量过少的节点上导致索引shards分配到同一个节点上,可以使用POST _cluster/reroute的move命令迁移分片到其他节点,rebalance模块会自动分配其他更合适的分片与其交换节点。根据具体业务使用场景可以适当调节balance.index,balance.shard配置。