Elasticsearch:人类语言到 Elasticsearch 查询 DSL

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

Elasticsearch 为开发者提供了强大的搜索功能。Elasticsearch 使用 DSL 来进行查询。对于很多从关系数据库过来的人,这个很显然不很适应。虽然我们可以使用 SQL 来进行查询,但是我们必须通过一些命令来进行转换。我们可以通过阅读文章:

  • Elasticsearch:Elasticsearch SQL介绍及实例 (一)

  • Elasticsearch:Elasticsearch SQL介绍及实例(二)

来了解更多。幸运的是,目前 Elastic 在从事 ESQL 的研发,并在不久的将来和开发者见面。你可以阅读文章 “Elasticsearch:ESQL 简介 — 一种用于灵活、迭代分析的新查询语言”。

在今天的文章中,我来详细介绍一下一个网络上的工具。它可以帮助我们从人类语言的描述到 DSL 查询的转换。它的网址是 https://www.dsltranslate.com/。虽然我不知道它是如何实现的,但是从实现的方式上感觉非常像 ChatGPT。

示例一

找出最大值:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

上面输出的结果是:

{ 
   "size": 0, 
   "aggs": { 
      "max_value": { 
         "max": { 
            "field": "_value" 
         } 
      } 
   } 
}

我们在上面的输入框中输入中文字:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

 我们可以看到可以得到同样的结果。

示例二

显示所有价格从 100.000 USD 到 200.00 USD 的红色汽车:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

我们可以看到的结果是:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "color": "red" }},
        { 
          "range" : { 
            "price" : { 
              "gte" : 100000, 
              "lte" : 200000 
            } 
          } 
        }   
      ]  
    }  
  }  
}

 我们尝试使用中文来进行操作:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

从上面的输出中,我们可以得到同样的结果。

示例三

查找每个每个时间桶里的最大值及平均值:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

上面的结果为:

{ 
  "size": 0, 
  "aggs": { 
    "time_buckets": { 
      "date_histogram": { 
        "field": "timestamp", 
        "interval": "1h"  
      }, 
      "aggs": { 
        "max_value": { 
          "max": { 
            "field": "value"  
          }  
        }, 
        "avg_value": {  
          "avg": {  
            "field": "value"  
          }  
        }  
      }  
    }  

  }  

 }

示例三

在每个时间桶中找到前 3 个术语:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

上面显示的结果为:

{ 
  "size": 0, 
  "aggs": { 
    "time_buckets": { 
      "date_histogram": { 
        "field": "@timestamp", 
        "interval": "<time bucket>" 
      }, 
      "aggs": { 
        "top_terms": { 
          "terms": { 
            "field": "<field>",  
            "size" : 3,  
            "order" : { "_count" : "desc"}  
          }  
        }  
      }  
    }  
  }  
}

示例四

我们添加如下的 mapping:

{
  "mappings": {
    "properties": {
      "date": {
        "type": "date",
        "format": "dateOptionalTime"
      },
      "visits": {
        "type": "integer"
      },
      "max_time_spent": {
        "type": "integer"
      }
    }
  }
}

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

{
  "size": 0, 
  "aggs": {
    "monthly_visits": {
      "date_histogram": {
        "field": "date",
        "interval": "month" 
      },
      "aggs": {
        "avg_visits": { 
          "avg": {"field" : "visits"} 
        }  
      }  
    }  												     }  
}

示例五

找出每个时间桶的前 3 个术语的百分比:

Elasticsearch:人类语言到 Elasticsearch 查询 DSL

上面输出的结果为:

{
  "size": 0, 
  "aggs": {
    "time_buckets": {
      "date_histogram": {
        "field": "date",
        "interval" : "1h"  
      },
      "aggs": {
        "top_3_terms": { 
          "terms": { 
            "field": "_type", 
            "size" : 3,  
            "order" : { "_count" : "desc"} 										   }, 
          aggs: { 
            percentage: { bucket_script: { script: "_count * 100 / sum(total)", buckets_path: { total: "_count" } } }   }   }   }   }   }  }

 好了,今天我就展示到这里。你可以使用上面的工具做更多的试验。文章来源地址https://www.toymoban.com/news/detail-440156.html

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

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

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

相关文章

  • ElasticSearch的查询语言:复合查询

    ElasticSearch是一个开源的搜索和分析引擎,它基于Lucene库构建,具有高性能、可扩展性和易用性。ElasticSearch的查询语言是一种用于查询和操作ElasticSearch数据的语言,它支持复合查询,即可以将多个查询组合成一个复合查询。 复合查询是ElasticSearch查询语言的一种重要特性,它

    2024年02月21日
    浏览(30)
  • Go语言开发者的Apache Arrow使用指南:内存管理

    如果你看了上一篇《Go语言开发者的Apache Arrow使用指南:数据类型》 [1] 中的诸多Go操作arrow的代码示例,你很可能会被代码中大量使用的Retain和Release方法搞晕。不光大家有这样的感觉,我也有同样的feeling:**Go是GC语言 [2] ,为什么还要借助另外一套Retain和Release来进行内存管理

    2024年02月11日
    浏览(52)
  • 2023 Google 开发者大会:将大型语言模型部署到你的手机

    在2022年末,不到半年时间,各家大语言模型的发展如雨后春笋,截至2023年9月,全球总共有接近100个大语言模型,可谓是百花齐放 显而易见,大语言模型凭借出色的AI对话能力,已经逐渐深入各个行业 2023 Google 开发者大会带来了 AI 专题,Google 技术推广工程师魏巍提出 “将大

    2024年02月07日
    浏览(44)
  • 【C/C++】C语言开发者必读:迈向C++的高效编程之旅

    🧑 作者简介 :阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍 :分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等

    2024年03月20日
    浏览(48)
  • Elasticsearch查询语言基础

    Elasticsearch是一个分布式、实时的搜索和分析引擎,它基于Apache Lucene库开发,具有高性能、可扩展性和易用性。Elasticsearch查询语言(Elasticsearch Query DSL,简称为ESQ)是Elasticsearch中用于构建查询和搜索请求的语言,它提供了一种强大的方式来查询和分析数据。 Elasticsearch查询语言基

    2024年02月20日
    浏览(29)
  • Java转Go:java开发者转学go语言,请给我一些建议和学习推荐

    在做开发时遇到最无理的需求就是部门没了😂 遇到最无理的需求就是部门没了😂,差点人也在这个公司没了,但好在是跟着大部队换了一个部门,就是要转go,也可能要用js和solidity开发 一开始知道部门没了,第一时间一定是会担心,甚至后面知道有的同事要被毕业,有的同

    2024年02月13日
    浏览(50)
  • 推出 Elasticsearch 查询语言 (ES|QL)

    作者:Costin Leau 我很高兴地宣布,经过大约一年的开发,Elasticsearch 查询语言 (ES|QL) 已准备好与世界共享,并已登陆 Elasticsearch 存储库。 ES|QL 是 Elasticsearch® 原生的强大声明性语言,专为可组合性、表现力和速度而设计。 Elasticsearch 支持多种语言,从古老的 queryDSL 到 EQL、KQ

    2024年02月13日
    浏览(41)
  • Python语言,ES(Elasticsearch)基础查询

    https://blog.csdn.net/y472360651/article/details/76652021 https://www.cnblogs.com/bainianminguo/articles/12763099.html

    2024年02月11日
    浏览(47)
  • Elasticsearch:ES|QL 查询语言简介

    警告 :此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将尽最大努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。在 Elastic Stack 8.11 中已经提供预览版。 目录 运行 ES|QL 查询 ES|QL API Kibana 限制 ES|QL 语法参考 基本语法 注释 运算

    2024年02月08日
    浏览(38)
  • ES|QL:Elasticsearch的 新一代查询语言

    作者:李捷 “ 学会选择很难。学会正确选择更难。而在一个充满无限可能的世界里学会正确选择则更难,也许是太难了。 ” 巴里-施瓦茨(Barry Schwartz)在《选择的悖论--多就是少》(The Paradox of Choice -More is Less)一书中的一段话概括了为什么灵活性和可定制性过高会让用户

    2024年02月08日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包