Elasticsearch:ES|QL 动手实践

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

在我之前的文章 “Elasticsearch:ES|QL 查询语言简介”,我对 Elasticsearch 的最新查询语言 ES|QL 做了一个简单的介绍。在今天的文章中,我们详细来使用一些例子来展示 ES|QL 强大的搜索与分析功能。

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

安装

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考如下的链接来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch
  • Kibana:如何在 Linux,MacOS 及 Windows上安装 Elastic 栈中的 Kibana

在安装的时候,我们选择 Elastic Stack 8.x 来进行安装。特别值得指出的是:ES|QL 只在 Elastic Stack 8.11 及以后得版本中才有。你需要下载 Elastic Stack 8.11 及以后得版本来进行安装。

在首次启动 Elasticsearch 的时候,我们可以看到如下的输出:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们需要记下 Elasticsearch 超级用户 elastic 的密码。

写入数据

首先,我们在 Kibana 中打入如下的命令来创建一个叫做 nyc_taxis 的索引:

PUT nyc_taxis
{
  "mappings": {
    "dynamic": "strict",
    "_source": {
      "mode": "stored"
    },
    "properties": {
      "cab_color": {
        "type": "keyword"
      },
      "dropoff_datetime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "dropoff_location": {
        "type": "geo_point"
      },
      "ehail_fee": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "extra": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "fare_amount": {
        "type": "double"
      },
      "improvement_surcharge": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "mta_tax": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "passenger_count": {
        "type": "integer"
      },
      "payment_type": {
        "type": "keyword"
      },
      "pickup_datetime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "pickup_location": {
        "type": "geo_point"
      },
      "rate_code_id": {
        "type": "keyword"
      },
      "store_and_fwd_flag": {
        "type": "keyword"
      },
      "surcharge": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "tip_amount": {
        "type": "double"
      },
      "tolls_amount": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "total_amount": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "trip_distance": {
        "type": "scaled_float",
        "scaling_factor": 100
      },
      "trip_type": {
        "type": "keyword"
      },
      "vendor_id": {
        "type": "keyword"
      },
      "vendor_name": {
        "type": "text"
      }
    }
  }
}

接着,我们可以在地址 GitHub - liu-xiao-guo/esql 下载数据集文件 esql.json。 我们可以使用如下的命令来写入数据:

curl --cacert /Users/liuxg/elastic/elasticsearch-8.11.0/config/certs/http_ca.crt -u elastic:o6G_pvRL=8P*7on+o6XH -s -H "Content-Type: application/x-ndjson" -XPOST https://localhost:9200/nyc_taxis/_bulk --data-binary @esql.json

你需要根据自己的安装目录改写上面的证书 http_ca.crt 的路径。你需要根据 elastic 用户的密码做相应的调整。

运行完上面的命令后:

GET nyc_taxis/_count

上面的命令返回:

{
  "count": 100,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  }
}

我们可以看到 100 个数据。我们为这个数据创建一个 data view:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这样我们就为 nyc_taxis 创建好了一个 index pattern。

ES|QL 动手实践 

首先我们来做一个简单的练习。

查询数据

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们选定好时间范围,再选择 Try ES|QL

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们发现在默认的情况下,在 Query bar 里的查询语句是这样的:

from nyc_taxis | limit 10

这个相当于:

GET nyc_taxis/_search?size=10

为了方便展示,我们把编辑框放大:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这样我们的内容更容易看的清楚一些。

我们做如下的查询:

from nyc_taxis 
| limit 100
| project pickup_datetime, total_amount

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

在上面,我们使用 project 来返回我们想要的字段。当然我们可以使用 keep 来做同样的事情:

from nyc_taxis 
| limit 100
| keep pickup_datetime, total_amount

我们也可以在 Kibana 的 Dev Tools 中打入如下的命令:

POST /_query?format=json
{
  "query": """
    from nyc_taxis 
    | limit 100
    | keep pickup_datetime, total_amount
  """
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们也可以改变它的输出格式为 txt:

POST /_query?format=txt
{
  "query": """
    from nyc_taxis 
    | limit 100
    | keep pickup_datetime, total_amount
  """
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们还可以输出为 csv 格式:

POST /_query?format=csv
{
  "query": """
    from nyc_taxis 
    | limit 10
    | keep pickup_datetime, total_amount
  """
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以通过 sort 来对结果进行排序:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以看到结果是按照 total_amount 进行降序排列的。

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

在上面,我们可以看到针对 nyc_taxis 这个索引,它没有 @timestamp 时间字段。那我们该怎么办呢?我们可以通过字段 alias 来实现这个。我们执行如下的命令:

PUT nyc_taxis/_mapping
{
  "properties": {
    "@timestamp": {
      "type": "alias",
      "path": "pickup_datetime"
    }
  }
}

执行完上面的命令后,我们再次刷新页面:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

可能有人想问,这个相应的 DSL 查询的语句是什么呢?如果大家对 DSL 很熟悉的话,上面的语句和下面的查询的结果是一样的:

GET nyc_taxis/_search?filter_path=**.hits
{
  "size": 100,
  "_source": false,
  "fields": [
    "pickup_datetime",
    "tolls_amount"
  ],
  "sort": [
    {
      "total_amount": {
        "order": "desc"
      }
    }
  ]
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

接下来,我们来查询 fare_amount 大于 20 的结果:

from nyc_taxis 
| where fare_amount > 20

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

from nyc_taxis 
| where fare_amount > 20
| where payment_type == "1"

上面显示的结果不是很清楚,我们可以使用 keep 来进行查看:

from nyc_taxis 
| where fare_amount > 20
| where payment_type == "1"
| keep fare_amount, payment_type

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以加入更多的过滤器:

from nyc_taxis 
| where fare_amount > 20
| where payment_type == "1"
| where tip_amount > 5
| keep fare_amount, payment_type, tip_amount

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以通过 limit 来限制前面的 5 个结果(在上面有6个结果显示):

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

在上面我有有意把 limit 写成大写的 LIMIT。我们可以看出来,它实际上是没有任何的影响。也就是说关键词和大小写无关。我们还可以针对结果进行排序:

from nyc_taxis 
| where fare_amount > 20
| where payment_type == "1"
| where tip_amount > 5
| LIMIT 5 | Sort tip_amount desc
| keep fare_amount, payment_type, tip_amount

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

上面的查询和下面的 DSL 查询是一样的:

GET nyc_taxis/_search
{
  "size": 5,
  "_source": [
    "fare_amount",
    "payment_type",
    "tip_amount"
  ],
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "fare_amount": {
              "gt": 20
            }
          }
        },
        {
          "term": {
            "payment_type": "1"
          }
        },
        {
          "range": {
            "tip_amount": {
              "gt": 5
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "tip_amount": {
        "order": "desc"
      }
    }
  ]
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

很显然,我们的 ES|QL 语法更为简单明了。更重要的是,它的执行速度还更快!

接下来,我们来通过现有的字段来生成新的字段。这个也就是我们之前讲过的运行时字段(runtime fields)。我们想计算出来每英里的费用是多少:

from nyc_taxis 
| eval cost_per_mile = total_amount/trip_distance
| keep total_amount, trip_distance, cost_per_mile

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

如果我们使用之前的 runtime fields 来实现,也就是这样的:

GET nyc_taxis/_search?filter_path=**.hits
 {
   "_source": false, 
   "runtime_mappings": {
     "cost_per_mile": {
       "type": "double",
       "script": {
         "source": "emit(doc['total_amount'].value/doc['trip_distance'].value)"
       }
     }
   },
   "fields": [
     "total_amount",
     "trip_distance",
     "cost_per_mile"
   ]
 }

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

从上面的比较我们可以看出来,ES|QL 是非常简洁的,而且易于理解。

针对上面的查询,我们还可以添加过滤器来进行过滤:

from nyc_taxis 
| eval cost_per_mile = total_amount/trip_distance
| where trip_distance > 10
| keep total_amount, trip_distance, cost_per_mile

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们接下来针对生成的字段 cost_per_mile 更进一步过滤:

from nyc_taxis 
| eval cost_per_mile = total_amount/trip_distance
| where trip_distance > 10
| keep total_amount, trip_distance, cost_per_mile
| where cost_per_mile > 3.5

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

从显示的结果中,我们可以看出来,我们只有两个结果。

我们可更进一步进行排序:

from nyc_taxis 
| eval cost_per_mile = total_amount/trip_distance
| where trip_distance > 10
| keep total_amount, trip_distance, cost_per_mile
| where cost_per_mile > 3.5
| sort cost_per_mile desc

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们也可以使用 ES|QL 对 text 字段来进行搜索,虽然在目前有一些限制。具体请参阅文章 “Elasticsearch:ES|QL 的限制”。我们可以参阅其中的部分:

文本字段的行为类似于关键字字段

虽然 ES|QL 支持 text 字段,但 ES|QL 并不像 Search API 那样处理这些字段。 ES|QL 查询不会查询或聚合已分析的字符串 (analyzed string)。 相反,ES|QL 查询将尝试获取 keyword 族类型的 text 字段的子字段并对其进行查询/聚合。 如果无法检索关键字子字段,ES|QL 将从文档的 _source 获取字符串。 如果无法检索 _source,例如使用合成源时,则返回 null。

请注意,ES|QL 对 keyword 子字段的检索可能会产生意想不到的后果。 文本字段上的 ES|QL 查询区分大小写。 此外,子字段可能已使用规范化器(normalizer)进行映射,该规范化器可以转换原始字符串。 或者它可能已使用 ignore_above 进行映射,这可以截断字符串。 这些映射操作均不会应用于 ES|QL 查询,这可能会导致误报或漏报。

为了避免这些问题,最佳实践是明确你查询的字段,并查询关键字子字段而不是文本字段。

这个会在将来的版本中进行更进一步的提高。

接下来,我们尝试来做一下文字搜索。比如:

from nyc_taxis 
| where vendor_name like "Uber"
| keep vendor_name

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

在上面,我们可以看到 vendor_name 为 "uber" 的文档并没有被搜索到,这是因为 ES|QL 把 text 字段当做 keyword 来进行搜索了。为了能够真的 Uber 和 uber 文档同时进行搜索,我们可以使用如下的方法:

from nyc_taxis 
| where vendor_name like "?ber"
| keep vendor_name

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们还可以做如下的搜索:

from nyc_taxis 
| where vendor_name rlike "[uU]ber"
| keep vendor_name

事实上,在我们的文档里,我们还有一些文档的 vendor_name 是 "Uber special", “Uber taxi” 等,但是在我们的上面的搜索中,我们没有看到,为了能够搜索到这些文档,我们可以使用如下的搜素:

from nyc_taxis 
| where vendor_name rlike "[uU]ber.*"
| keep vendor_name

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们接下来针对数据进行聚合:

聚合数据

我们想知道每个 payment_type 的最多 passenger_count 的数值是多少。我们可以使用 stats 来完成:

from nyc_taxis 
| stats max_passengers=max(passenger_count) by payment_type
| keep payment_type, max_passengers

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这个和如下我们以前的 DSL 相似:

GET nyc_taxis/_search?filter_path=aggregations
{
  "size": 0,
  "aggs": {
    "max_passengers": {
      "terms": {
        "field": "payment_type"
      },
      "aggs": {
        "max_count": {
          "max": {
            "field": "passenger_count"
          }
        }
      }
    }
  }
}

上面命令返回的结果是:

{
  "aggregations": {
    "max_passengers": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "1",
          "doc_count": 71,
          "max_count": {
            "value": 6
          }
        },
        {
          "key": "2",
          "doc_count": 27,
          "max_count": {
            "value": 5
          }
        },
        {
          "key": "3",
          "doc_count": 1,
          "max_count": {
            "value": 1
          }
        },
        {
          "key": "4",
          "doc_count": 1,
          "max_count": {
            "value": 1
          }
        }
      ]
    }
  }
}

很显然,我们的 ES|QL 查询会简单明了很多。

我们还可以添加其他的聚合,比如我们想得到每个 max_passengers 里支付种类 payment_type 的数量:

from nyc_taxis 
| stats max_passengers=max(passenger_count) by payment_type
| keep payment_type, max_passengers
| stats type_count=count(payment_type) by max_passengers

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

如上所示,在显示区了,它只显示最近的一次的聚会情况。

我们还可以针对时间来做 date_histogram 聚合:

from nyc_taxis 
| eval bucket=AUTO_BUCKET(@timestamp, 12, "2014-12-22T00:00:00.00Z", "2015-11-26T00:00:00.00Z")
| stats count(*) by bucket

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这个和我们之前的如下 DSL 相似:

GET nyc_taxis/_search?filter_path=aggregations
{
  "size": 0,
  "aggs": {
    "monthly_count": {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "30d"
      }
    }
  }
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以针对 payment_types 进行统计:

from nyc_taxis 
| stats payment_types = count(*) by payment_type
| sort payment_types desc

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这个和 DSL 的如下统计类似:

GET nyc_taxis/_search?filter_path=aggregations
{
  "size":0,
  "aggs": {
    "payment_types": {
      "terms": {
        "field": "payment_type"
      }
    }
  }
}

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

在 Kibana 中进行可视化

我们也可以使用 ES|QL 在 可视化中进行使用:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们可以自己在 Discover 中生成相应的可视化。点击上面的保存图标:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

这样就很方便地生成了我们的可视化。

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

我们还可以对它进行编辑:

Elasticsearch:ES|QL 动手实践,Elasticsearch,ESQL,Elastic,elasticsearch,大数据,搜索引擎,全文检索,sql

好了,今天就写到这里。希望我们都学到如何使用 ES|QL 这个工具在未来我们的工作中提供效率。文章来源地址https://www.toymoban.com/news/detail-773771.html

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

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

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

相关文章

  • Elasticsearch:从 ES|QL 到 Python 数据帧

    在我之前的文章 “Elasticsearch:ES|QL 查询展示”,我展示了如何在 Kibana 中使用 ES|QL 对索引来进行查询及统计。在很多的情况下,我们需要在客户端中来对数据进行查询,那么我们该怎么办呢?我们需要使用到 Elasticsearch 的客户端。在今天的文章中,我们来展示如何使用 Pyt

    2024年03月19日
    浏览(73)
  • Elasticsearch:ES|QL 查询中的元数据字段及多值字段

    在今天的文章里,我来介绍一下 ES|QL 里的元数据字段以及多值字段。我们可以利用这些元数据字段以及多值字段来针对我们的查询进行定制。这里例子的数据集,请参考文章 “Elasticsearch:ES|QL 快速入门”。 ES|QL 可以访问元数据字段。 目前支持的有: _index :文档所属的索引

    2024年02月04日
    浏览(61)
  • ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

    本文是ElasticSearch第三讲,在了解ElaticSearch之后,我们还要了解Elastic背后的生态 即我们 常说的ELK ;与此同时,还会给你展示ElasticSearch的 案例场景 ,让你在学习ES前对它有个全局的印象。 Beats + Logstash + ElasticSearch + Kibana 如下是我从官方博客中找到图,这张图展示了ELK生态以

    2024年02月07日
    浏览(40)
  • 从白日梦到现实:推出 Elastic 的管道查询语言 ES|QL

    作者:George Kobar, Bahubali Shetti, Mark Settle 今天,我们很高兴地宣布 Elastic® 的新管道查询语言 ES|QL(Elasticsearch 查询语言)的技术预览版,它可以转换、丰富和简化数据调查。 ES|QL 由新的查询引擎提供支持,通过并发处理提供高级搜索功能,无论数据源和结构如何,都可以提高

    2024年02月04日
    浏览(55)
  • Elastic Stack 8.11:引入一种新的强大查询语言 ES|QL

    作者:Tyler Perkins, Ninoslav Miskovic, Gilad Gal, Teresa Soler, Shani Sagiv, Jason Burns Elastic® Stack 8.11 引入了数据流生命周期、一种配置数据流保留和降采样(downsampling) 的简单方法(技术预览版),以及有关 Kibana® Inspector 中跨集群搜索响应的详细信息以及重新路由摄取处理器(reroute i

    2024年02月03日
    浏览(54)
  • Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索

    作者:来自 Elastic Tyler Perkins, Shani Sagiv, Gilad Gal, Ninoslav Miskovic Elastic® Stack 8.12 构建于 Apache Lucene 9.9(有史以来最快的 Lucene 版本)之上,基于我们对标量量化和搜索并发性的贡献,为文本、向量和混合搜索带来了巨大进步。 此版本还优化了 Elasticsearch® 中的查询并行化以及

    2024年01月22日
    浏览(44)
  • Elasticsearch:ESQL 简介 — 一种用于灵活、迭代分析的新查询语言

    作者:Seth Payne 特别声明 :截止撰写该博文,在目前的公开发行版中,该功能还不能公开测试。这个功能将在未来的发行版中发布。 长期以来,Elastic Platform 一直被视为搜索用例和机器生成数据的分析系统。 分析专注于处理摄入的数据,其中重要的思想是如何在 Elasticsearch

    2023年04月23日
    浏览(34)
  • ElasticSearch内容分享(八):ES大厂实践 - 哈啰、腾讯、美团

    目录 哈啰:记录一次ElasticSearch的查询性能优化 腾讯:腾讯万亿级 Elasticsearch 技术实践 美团:美团外卖搜索基于Elasticsearch的优化实践 搜索平台的公共集群,由于业务众多,对业务的es查询语法缺少约束,导致问题频发。业务可能写了一个巨大的查询直接把集群打挂掉,但是

    2024年02月04日
    浏览(46)
  • Easy-Es框架实践测试整理 基于ElasticSearch的ORM框架

    Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生。EE是Mybatis-Plus的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,助力您快速实现各种场

    2024年01月16日
    浏览(54)
  • ES搜索引擎入门+最佳实践(九):项目实战(二)--elasticsearch java api 进行数据增删改查

            本篇是这个系列的最后一篇了,在这之前可以先看看前面的内容: ES搜索引擎入门+最佳实践(一)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(二)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(三)_flame.liu的博客-CSDN博客 ES搜索引擎入门+最佳实践(四)_flame.liu的博客

    2024年02月12日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包