ES-脚本查询

这篇具有很好参考价值的文章主要介绍了ES-脚本查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概念

Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能,ES支持多种脚本语言,如painless,其语法类似于Java,也有注释、关键字、类型、变量、函数等,其就要相对于其他脚本高出几倍的性能,并且安全可靠,可以用于内联和存储脚本。

2. 支持的语言

(1)groovy:ES 1.4.x-5.0的默认脚本语言

(2)painless:JavaEE使用java语言开发,.Net使用C#/F#语言开发,Flutter使用Dart语言开发,同样,ES 5.0+版本后的Scripting使用的语言默认就是painless,painless是一种专门用于Elasticsearch的简单,用于内联和存储脚本,是ES 5.0+的默认脚本语言,类似于Java,也有注释、关键字、类型、变量、函数等,是一种安全的脚本语言。并且是Elasticsearch的默认脚本语言。

(3)其他:

expression:每个文档的开销较低:表达式的作用更多,可以非常快速地执行,甚至比编写native脚本还要快,支持javascript语法的子集:单个表达式。缺点:只能访问数字,布尔值,日期和geo_point字段,存储的字段不可用

mustache:提供模板参数化查询

特点
语法简单,学习成本低
灵活度高,可编程能力强
性能相较于其他脚本语言很高
安全性好
独立语言,虽然易学但仍需单独学习
相较于DSL性能低
不适用于复杂的业务场景

3. 应用场景:
各种复杂的应用场景,如自定义评分、自定义聚合查询等。
正则:
早先某些版本正则表达式默认情况下处于禁用模式,因为它绕过了painless的针对长时间运行和占用内存脚本的保护机制。而且有深度对战行为。如果需要开启正则,需要配置:script.painless.regex.enabled: true

注意:通常正则的使用范围比较小,应用范围基本限制在数据量比较小和并发量比较小的应用场景下。

doc[‘field’].value和params[‘_source’][‘field’]:

理解之间的区别是很重要的,doc[‘field’].value和params[‘_source’][‘field’]。首先,使用doc关键字,将导致该字段的条件被加载到内存(缓存),这将导致更快的执行,但更多的内存消耗。此外,doc[…]符号只允许简单类型(不能返回一个复杂类型(JSON对象或者nested类型)),只有在非分析或单个词条的基础上有意义。但是,doc如果可能,使用仍然是从文档访问值的推荐方式,因为_source每次使用时都必须加载并解析。使用_source非常缓慢。文章来源地址https://www.toymoban.com/news/detail-506967.html

到了这里,关于ES-脚本查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Es支持的查询方式

    1. Match Query:匹配查询,可以用于匹配一个字段中的文本。 2. Term Query:精确查询,用于匹配一个字段中的确切值。 3. Range Query:范围查询,用于匹配一个字段中的值在指定范围内的文档。 4. Bool Query:布尔查询,可以将多个查询组合起来使用。 5. Wildcard Query:通配符查询,用

    2024年02月13日
    浏览(31)
  • ElasticSearch第二讲:ES详解 - ElasticSearch基础概念

    在学习ElasticSearch之前,先简单了解下ES流行度,使用背景,以及相关概念等。本文是ElasticSearch第二讲,ElasticSearch的基础概念。 根据DB Engine的排名显示,ElasticSearch是最受欢迎的企业级搜索引擎。 下图红色勾选的是我们前面的系列详解的,除此之外你可以看到搜索库ElasticSea

    2024年02月09日
    浏览(35)
  • 【Elasticsearch】es脚本编程使用详解

    目录 一、es脚本语言介绍 1.1 什么是es脚本 1.2 es脚本支持的语言 1.3 es脚本语言特点

    2024年02月08日
    浏览(32)
  • Elasticsearch 系列(二)- ES的基本概念

    本章将和大家分享 Elasticsearch 的一些基本概念。话不多说,下面我们直接进入主题。 Lucene是Apache的开源搜索引擎类库,提供了搜索引擎的核心API。 1、Lucene的优势:易扩展、高性能(基于倒排索引) 2、Lucene的缺点:只限于Java语言开发、学习曲线陡峭、不支持水平扩展 Elast

    2024年02月05日
    浏览(28)
  • 「Elasticsearch 」Es复合查询

    目录 Bool 查询   Dis_max 查询  Function_score 查询 Nested 查询  Geospatial 查询  1. Geo Point 查询 2. Geo Shape 查询 Elasticsearch(简称为ES)是一个基于Lucene的分布式搜索和分析引擎,它提供了丰富的查询语言和API,可以用于构建高性能、可扩展的全文搜索、日志分析和数据可视化等应用

    2024年02月13日
    浏览(28)
  • 【Elasticsearch】ES精确查询和范围查询,ES时间字段排序实例,ES倒排索引介绍

    termQuery matchQuery 模糊查询 multiMatchQuery 多个字段模糊查询 如果时间字段写入时用的类型是Text,可以用“时间字段.keyword”来处理 #查询前传入分页参数 #分页后拿到总记录数 把文档D对应到的映射转换为到文档ID的映射,每个都对应着一系列的文档,这些文

    2024年02月15日
    浏览(97)
  • ElasticSearch的复杂查询与脚本功能

    Elasticsearch是一个基于分布式搜索和分析引擎,它可以为应用程序提供实时、可扩展的搜索功能。Elasticsearch是一个基于Lucene的搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是一个基于Lucene的搜索引擎,它提供了一个分布式多用户能力的全文搜索引擎。

    2024年02月21日
    浏览(31)
  • 【ElasticSearch笔记】ES基本查询

    目录 一、简介 ES与关系型数据库对比 文本分析 倒排索引 二、基本查询 空查询 相关性 查询与过滤 1. 查询与\\\"first blog\\\"字段最佳匹配的文档 2. 搜索博客等级(level)大于等于2, 同时发布日期(post_date)是2018-11-11的博客 结构化搜索 1. 精确值查找(term) 2. 多个精确值查找(terms) 3

    2024年01月21日
    浏览(29)
  • 【ES】Elasticsearch核心基础概念:文档与索引

    es的核心概念主要是:index(索引)、Document(文档)、Clusters(集群)、Node(节点)与实例,下面我们先来了解一下Document与Index。 在讲解Document与Index概念之前,我们先来了解一下RESTful APIs,因为下面讲解Document和Index的时候会使用到。 当我们把es服务器启动起来之后,要怎么调用呢?

    2024年02月05日
    浏览(40)
  • ES es Elasticsearch 十三 Java api 实现搜索 分页查询 复杂查询 过滤查询 ids查询 等

    目录 Java api 实现搜索 Pom.xml 建立链接 搜索全部记录 增加规则值查某些字段 搜索分页 全代码 Ids 搜索 搜索Match搜索 multi_match 搜索 多字段搜索 复杂查询 bool查询 filter  bool 复杂查询增加过滤器查询 复杂擦好像加排序 日志 思路 参考 api 写法 写Java代码 请求条件构建层次

    2024年02月04日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包