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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 安全 Java
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(3)
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(3)
109 0
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(3)
|
数据安全/隐私保护
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(4)
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(4)
141 0
带你读《Elastic Stack 实战手册》之62:—— 3.5.18.1.Workplace Search(4)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(中)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(中)
|
存储 缓存 安全
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(上)
带你读《Elastic Stack 实战手册》之31:——3.4.2.16.Painless scripting(上)
110 0
|
机器学习/深度学习 SQL 运维
带你读《Elastic Stack 实战手册》之57:——3.5.16.1.Setup and security(下)
带你读《Elastic Stack 实战手册》之57:——3.5.16.1.Setup and security(下)
111 0
|
机器学习/深度学习 运维 安全
带你读《Elastic Stack 实战手册》之57:——3.5.16.1.Setup and security(上)
带你读《Elastic Stack 实战手册》之57:——3.5.16.1.Setup and security(上)
104 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
333 0
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
260 0
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
100 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
107 0

热门文章

最新文章