带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(下)

简介: 带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(下)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.16.Painless scripting(中) https://developer.aliyun.com/article/1230166



通过 Painless Script 的 API 帮助:https://www.elastic.co/guide/en/elasticsearch/painless/7.10/painless-api-reference.html,

最终找到 Long 类型的 API 文档地址:https://www.elastic.co/guide/en/elasticsearch/painless/7.10/painless-api-reference-shared-org-elasticsearch-index-fielddata.html#painless-api-reference-shared-ScriptDocValues-Longs

 

ScriptDocValues.Longs

 

l List asList()

l int getLength()

l Collection asCollection()

l Long get(int)

l .......

 

我们通过观察数据知道 shop_id 存储的是一个 list 数据。

 

再次调整脚本:


GET user_info/_search
{
  "query": {
    "function_score": {
      "script_score": {
        "script": {
          "lang": "painless",
          "source": """
               return doc['shop_id'].getLength();
          """
        }
      }
    }
  }
}
#返回:
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 5.0,
    "hits" : [
      {
        "_index" : "user_info",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 5.0,
        "_source" : {
          "first" : "Michael2",
          "last" : "Jordan2",
          "shop_id" : [
            110,
            112,
            113,
            114,
            115
          ],
          "time" : "2021-05-08"
        }
      },
      {
        "_index" : "user_info",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 3.0,
        "_source" : {
          "first" : "Michael",
          "last" : "Jordan",
          "shop_id" : [
            100,
            102,
            103
          ],
          "time" : "2021-05-09"
        }
      }
    ]
  }
}

可以看到,得分最高的为 "max_score" : 5.0, 因为我们使用 script_score 调整了评分,以店铺 ID 个数为评分结果,文档 2 共计 5 个ID,所以返回的是 5 。

 

通过以上案例,详细解读了 Painless Debug 在实际场景中的应用,通过一步步分析最终掌握了调试、看错误信息、找官方文档解决的方法,最终实现了掌握 Painless Debug 的目的。

 

创作人简介: 

李增胜,Elasticsearch 认证工程师、PMP 项目管理认证,现就职于汇通达网络股份有限公司,任产业交易平台交易域技术经理,从事微服务架构、搜索架构方向开发与管理工作。技术关注:电商、产业互联网等领域。

博客:https://www.jianshu.com/u/59dceda66b57

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
监控 负载均衡 算法
构建高效微服务架构的五大核心组件
【4月更文挑战第6天】随着现代业务需求的多样化和复杂性增加,传统的单体应用已无法满足快速迭代与灵活部署的需求。微服务架构应运而生,以其高度模块化、独立部署和可伸缩性成为企业转型的关键。本文聚焦于构建高效微服务架构的核心组件,从服务发现、配置管理、负载均衡、容错处理到服务监控五个方面进行深入剖析,旨在提供一套全面的技术指南以支持后端开发的最佳实践。
|
Python
Python 字典转 dataframe
使用pandas将Python字典转换为DataFrame,需先确保安装pandas(`pip install pandas`)。
635 1
|
数据可视化 计算机视觉
ICCV2021 | TOOD:任务对齐的单阶段目标检测
单阶段目标检测通常通过优化目标分类和定位两个子任务来实现,使用具有两个平行分支的头部,这可能会导致两个任务之间的预测出现一定程度的空间错位。本文提出了一种任务对齐的一阶段目标检测(TOOD),它以基于学习的方式显式地对齐这两个任务。
ICCV2021 | TOOD:任务对齐的单阶段目标检测
|
9月前
|
人工智能
87%的案例学习都停留在"看热闹"——用这套AI指令把案例变成你的决策资产
87%的案例学习只停留在看热闹。分享一套案例分析AI指令,通过结构化分析框架,帮你从案例中提炼可迁移的决策模型,提升学习效率。
769 14
|
9月前
|
数据采集 存储 人工智能
企业如何建设数据治理系统?企业数据治理平台实施步骤及最佳实践
在数字化转型深水区,数据已成为核心资产。本文系统解析数据治理平台建设的六大步骤与多行业实践,提炼从战略锚定到运营迭代的可落地路径,助力企业破解数据孤岛、质量与安全难题,释放数据价值。
|
11月前
|
存储 缓存 算法
《跨端互联进阶实践指南:从链路适配到长期效能的维护方案》
本文聚焦联机游戏跨端互联的核心痛点与实战方案,围绕体验同源性构建、网络异构适配、设备能力差异化适配、动态场景协同、数据同源校验及长周期效能维护六大关键维度,拆解从底层链路到上层体验的完整优化路径。文中融合链路弹性适配体系、分层设计适配架构、场景感知型协同机制等实用策略,强调通过动态调整传输协议、定制化设备适配规则、全链路数据校验等手段,破解跨端互联中的时序偏差、体验割裂、数据不一致等问题。指南兼具技术深度与落地性,系统阐述了异构环境下实现多终端指令同源、状态同步、体验同频的核心逻辑,为开发者提供兼顾稳定性与沉浸感的跨端互联实践参考,助力打造无缝衔接的跨设备游戏体验。
592 4
|
10月前
|
运维 Kubernetes 微服务
微服务上云:基于ACK Kubernetes集群的容器化部署全流程
本文详解基于阿里云容器服务ACK的微服务容器化全流程,涵盖架构设计、集群搭建、应用编排、安全部署与可观测性实践,提供从本地到云端的落地指南,助力企业构建高弹性、高可用的云原生生产环境。
|
10月前
|
机器学习/深度学习 人工智能 决策智能
小模型驱动大智能:NVIDIA新研究实现2.5倍效率提升,成本直降70%
NVIDIA联合港大提出ToolOrchestra,用小模型动态编排工具链,通过强化学习优化推理路径,在保证智能水平的同时提升2.5倍效率、降低70%成本,实现“以小控大”的高效AI新范式。
360 0
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
505 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
1544 6

热门文章

最新文章