ES优化实战-通过开启copy_to提升一倍的检索性能

这篇具有很好参考价值的文章主要介绍了ES优化实战-通过开启copy_to提升一倍的检索性能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  在对text字段进行搜索的时候,假如你需要对多个text类型的字段搜索,例如 文章的标题和文章的内容,这两个字段。

  在这种情况下,是可以开启copy_to来提速的。我测试的提速效果在百分之五十左右。

  它是将这两个字段copy到一个字段上,然后进行分词处理。之所以会快,就是因为如果你多个字段,要做多次的查询,如果合并到一个字段上,只需要做一次查询。

  但是请注意,它会额外花费比较多的磁盘资源!

测试结论

对两个text类型字段检索,数据内容为文章和标题。开启copy_to以后,搜索提升百分之五十左右。磁盘额外占用百分之二十五左右。

如何开启copy_to

我这里不做过多的介绍了,直接看官网吧。

copy_to | Elasticsearch Guide [8.4] | Elastic

看看资源花费情况

 GET _cat/indices?v

可以看到索引在开启copy_to前是583G,开启后是724G。磁盘多花费了24%。这个要根据自己数据情况,具体去测试分析。因为大家的数据,场景都不一样。

ES优化实战-通过开启copy_to提升一倍的检索性能

 看看提升效果

  我是写测试程序跑了几百个搜索词条件,做测试。搜索就是query_string,然后mache_phrase

  测试代码如下: 

    @Override
    public void comparisonCopyTo() throws IOException {
        // 搜索词
        List<String> queryList = Arrays.asList("中国", "美国", "拜登", "疫情", "苹果", "华为", "特朗普", "利好", "浪漫", "马斯特",
                "特斯拉", "台湾", "香港", "美食", "微信", "晴天", "北京", "救援", "失败", "报警",
                "媒体", "新疆", "京东", "深圳", "爆炸", "事故", "征地", "抗议", "聚众", "黑社会",
                "堵路", "打砸", "罢工", "跳楼", "招募", "黑旅馆", "争议", "盗窃", "碰车", "示威",
                "不满", "黑中介", "失火", "举报", "公道", "经济学家", "中国新闻周刊", "永定河", "中国大地财产保险股份有限公司", "冬奧",
                "天津大事件");


        // 对比逻辑:相同的搜索词,去对比搜索时间,打印日志,校验搜索结果
        for (String queryString:queryList) {

            HashMap<String, Float> fields = new HashMap<>();
            fields.put("content", 1.0F);
            fields.put("title", 1.0F);
            QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(queryString).fields(fields).type(MultiMatchQueryBuilder.Type.PHRASE);
            SearchResponse data = commonsDao.basicSearch(queryBuilder, 10, true, "all_data");

            // 查询copy-to的字段
            HashMap<String, Float> copyToFields = new HashMap<>();
            copyToFields.put("full_search", 1.0F);
            QueryStringQueryBuilder copyToQueryBuilder = QueryBuilders.queryStringQuery(queryString).fields(copyToFields).type(MultiMatchQueryBuilder.Type.PHRASE);
            SearchResponse copyToData = commonsDao.basicSearch(copyToQueryBuilder, 10, true, "all_data_copy_to");

            log.info("copy-to测试对比(un copy-to vs copy-to), 搜索词 {},查询时间对比 {} vs {}, 查询性能提升 {}% ,查询结果对比 {} vs {}", queryString,
                    data.getTook().getMillis(), copyToData.getTook().getMillis(), (float)(data.getTook().getMillis() - copyToData.getTook().getMillis())/data.getTook().getMillis()*100,
                    data.getHits().getTotalHits().value, copyToData.getHits().getTotalHits().value);
        }
    }

测试结果如下:

ES优化实战-通过开启copy_to提升一倍的检索性能文章来源地址https://www.toymoban.com/news/detail-418487.html

到了这里,关于ES优化实战-通过开启copy_to提升一倍的检索性能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES性能优化最佳实践- 检索性能提升30倍!

            Elasticsearch是被广泛使用的搜索引擎技术,它的应用领域远不止搜索引擎,还包括日志分析、实时数据监控、内容推荐、电子商务平台、企业级搜索解决方案以及许多其他领域。其强大的全文搜索、实时索引、分布式性能和丰富的插件生态系统使其成为了许多不同

    2024年02月08日
    浏览(38)
  • 如何通过优化服务器提升网站的SEO排名

    在当今数字化时代,拥有一个高效、稳定的服务器对于网站的成功至关重要。然而,服务器不仅仅是为了提供网站的基本运行,它还可以对搜索引擎优化(SEO)起到关键作用,于是就有了多IP站群服务器这样对SEO非常友好的服务器。通过优化服务器设置和配置,可以提升网站的性

    2024年02月07日
    浏览(67)
  • MySQL索引优化:提升查询速度的实战解析

    当涉及到大型数据库和复杂查询时,索引在MySQL中是一个重要的性能优化工具。通过使用索引,可以加速查询速度,减少查询的执行时间。下面是一个详细的MySQL添加索引的教程,使用Markdown格式进行说明。 步骤1:选择合适的列 首先,需要选择哪些列需要添加索引。通常情况

    2024年02月12日
    浏览(43)
  • ES实战:通过kibana配置滚动索引

    步骤在官网有明确的描述,按照步骤一步一步操作,就可以实现。 官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index-lifecycle-management.html 英语溜的直接看官网哈。 下面我们按照官网的配置指南一步步操作。 1、创建生命周期策略 点击创建进入生命周

    2024年01月22日
    浏览(26)
  • 性能提升30%!袋鼠云数栈基于 Apache Hudi 的性能优化实战解析

    Apache Hudi 是一款开源的数据湖解决方案,它能够帮助企业更好地管理和分析海量数据,支持高效的数据更新和查询。并提供多种数据压缩和存储格式以及索引功能,从而为企业数据仓库实践提供更加灵活和高效的数据处理方式。 在金融领域,企业可以使用 Hudi 来处理大量需要

    2024年02月09日
    浏览(34)
  • YOLOv5/YOLOv8改进实战实验:新型***亚像素卷积***优化上采样技术提升目标检测效果(即插即用)

      这是一个用于上采样的子像素卷积(SubPixel Convolution)模块,它是一种常见的图像超分辨率的技术,也可以应用于目标检测模型(如YOLO)的特征图上采样。下面我会分几个部分详细介绍这个模块的原理和在YOLO中的应用:   模块介绍:SubPixelConvolution_s是一个PyTorch模块,

    2024年02月15日
    浏览(39)
  • linux驱动和应用的数据交互ioctl函数和copy_from_user、copy_to_user

    首先,我们需要规定一些命令码,这些命令码在应用程序和驱动程序中需要保持一致。应用程序只需向驱动程序下发一条指令码,用来通知它执行哪条命令。如何解读这条指令和怎么实现相关操作,就是驱动程序自己要做的事。 应用程序的接口函数为ioctl,参考官方文档,函

    2024年02月07日
    浏览(32)
  • 警告UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach

    这个警告信息是提示在构造新的张量时,推荐使用  sourceTensor.clone().detach()  或  sourceTensor.clone().detach().requires_grad_(True) ,而不是使用  torch.tensor(sourceTensor)  的方式。 警告信息提到了这个建议,是因为在 PyTorch 中, torch.tensor()  函数都会创建新的张量,并且不与原先的张量

    2024年02月16日
    浏览(34)
  • UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone...的解决方案

    今天跑程序的过程中,遇到两个报错信息,由于不耽误程序的运行,之前一直没有留意,今天给修复了一下bug 报错信息: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).  

    2024年02月11日
    浏览(32)
  • TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to

    在用GPU训练模型时报如下的错误: TypeError: can’t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first. GPU上的tensor张量无法转为numpy格式,那我们把它转到CPU上即可。 方法非常简单,只需在目标张量后面加 .cpu() 即可。 Before: After:

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包