Elasticsearch date_range类型的用法(附带实例)
范围数据类型表示字段的上限和下限。例如,如果想为疫苗试验选择一组志愿者,可以根据年龄 25~50 岁或 51~70 岁、收入水平、城市居民等类别对志愿者进行分组。
Elasticsearch 提供了范围数据类型来支持对范围数据的搜索查询。范围由运算符定义,如用于上限的 lte(小于或等于)和 lt(小于),以及用于下限的 gte(大于或等于)和 gt(大于)。
Elasticsearch 提供了多种范围数据类型,包括 date_range、integer_range、float_range、ip_range 等。本节我们来看一下 date_range 类型的实际应用。
date_range 数据类型可以帮助为字段索引一个日期范围。然后我们可以使用 range 查询来根据日期的上限和下限来匹配条件。
使用 date_range 类型的实例代码如下:
现在,索引已经就绪,让我们用 Venkat 的培训课程和日期索引一些文档:
数据准备好之后,我们发出一个搜索请求,查找 Venkat 在两个日期之间的课程,实例代码如下:
date_range 让搜索日期范围变得很容易。除了 date_range,我们还可以创建其他范围类型,包括 ip_range、float_range、double_range、integer_range 等。
Elasticsearch 提供了范围数据类型来支持对范围数据的搜索查询。范围由运算符定义,如用于上限的 lte(小于或等于)和 lt(小于),以及用于下限的 gte(大于或等于)和 gt(大于)。
Elasticsearch 提供了多种范围数据类型,包括 date_range、integer_range、float_range、ip_range 等。本节我们来看一下 date_range 类型的实际应用。
date_range 数据类型可以帮助为字段索引一个日期范围。然后我们可以使用 range 查询来根据日期的上限和下限来匹配条件。
使用 date_range 类型的实例代码如下:
PUT trainings { "mappings": { "properties": { "name":{ ←--- 培训课程名称 "type": "text" }, "training_dates":{ ←--- training_dates字段被声明为date_range类型 "type": "date_range" } } } }Venkat Subramaniam 是一位屡获殊荣的作者,他开设了从编程到设计再到测试等诸多领域的培训课程。我们使用他的一些培训课程和日期作为示例,创建一个 trainings 索引,其中包含两个字段,分别是培训课程名称(text 类型)和培训日期(date_range 类型)。
现在,索引已经就绪,让我们用 Venkat 的培训课程和日期索引一些文档:
PUT trainings/_doc/1 { "name":"Functional Programming in Java", "training_dates":{ "gte":"2021-08-07", "lte":"2021-08-10" } } PUT trainings/_doc/2 { "name":"Programming Kotlin", "training_dates":{ "gte":"2021-08-09", "lte":"2021-08-12" } } PUT trainings/_doc/3 { "name":"Reactive Programming", "training_dates":{ "gte":"2021-08-17", "lte":"2021-08-20" } }date_range 类型的字段需要两个值,分别是上限和下限。它们通常由 gte(大于或等于)、lt(小于)等缩写来表示。
数据准备好之后,我们发出一个搜索请求,查找 Venkat 在两个日期之间的课程,实例代码如下:
GET trainings/_search { "query": { "range": { ←--- 使用range查询搜索 "training_dates": { ←--- 搜索在这两个日期之间的课程 "gt": "2021-08-10", "lt": "2021-08-12" } } } }根据查询响应(为简洁起见,省略了结果),我们了解到 Venkat 将在这两个日期之间开设一场“Programming Kotlin”培训(第二个文档与日期匹配)。
date_range 让搜索日期范围变得很容易。除了 date_range,我们还可以创建其他范围类型,包括 ip_range、float_range、double_range、integer_range 等。