目前,我已经知道如何从(时间戳)日期字段中筛选日期范围。这是一个简单的问题:
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
但是,当你对基于时间的范围感兴趣时,如何过滤日期,比如gte:“8:00:00”和lte:“10:00:00”?这有可能吗?
换句话说,我的要求是:如何让所有事件在本月(15-11-01/15-11-30)发生,但只能在上午8:00到10:00之间发生?
以下是我曾经只从当天开始到下午6点得到的结果:
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "(log_message:\"My Search String\")"
}
},
{
"range": {
"@timestamp": {
"time_zone": "CET",
"gt": "now-24h/d",
"lte": "now-24h/d+18h"
}
}
}
]
}
}
}
重要的部分是“now-24h/d”,它将轮到午夜/当天开始,尽管这有点棘手,因为它取决于您是否使用gt/lt(e),有关详细信息,请参阅参考文档。
如果我正确理解了您的问题,那么我认为您必须添加新字段,该字段只对时间进行索引
PUT your_index
{
"mappings": {
"your_type": {
"properties": {
"time": {
"type": "date",
"format": "HH:mm:ss"
}
}
}
}
}
然后你可以这样查询
{
"query": {
"bool": {
"must": [
{
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
},
{
"range": {
"time": {
"gte": "08:00:00",
"lte": "10:00:00"
}
}
}
]
}
}
}
这有用吗?
您可以使用范围
过滤器过滤正确的天数,然后使用脚本
过滤器过滤所需的小时数,如下所示:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"range": {
"date": {
"gte": "2015-11-01",
"lte": "2015-11-30"
}
}
},
{
"script": {
"script": {
"source": "doc.date.date.getHourOfDay() >= params.min && doc.date.date.getHourOfDay() <= params.max",
"params": {
"min": 8,
"max": 10
}
}
}
}
]
}
}
}
}
}
请注意,您需要确保启用动态脚本,以便此查询工作。
问题内容: 我存储的文档包含两个字段,即startDate和endDate。我想使用输入日期运行Elastic查询,并返回其startDate和endDate包含该日期的所有文档。例如, 如果我输入的日期为2015-01-02,则此文档应出现在结果中,因为输入的日期在开始日期和结束日期字段的范围内。 我可以使用一个字段进行范围查询,但由于范围仅接受一个,因此我不知道如何使用两个日期字段: 我还需要
我正在使用弹性搜索。我以前从未使用过的网络NEST客户端。我想做的是在得分前按日期范围过滤结果。 我使用对象初始值设定项语法,因为它最适合我。 我已经完成了我想要的: 这给了我一个JSON请求,就像我期望的那样: 但留档过滤查询说"弃用在2.0.0-beta1.改为使用bool查询,查询的必须子句和筛选器子句”。 因为这是我发现的唯一包含过滤器的方法,有没有更好的方法来使用嵌套对象初始值设定项语法
问题内容: 我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。1.范围查询2.范围过滤器 由于我现在的数据集很小,因此无法测试它们的性能。两者有什么区别?哪个会导致更快地检索文档和更快地响应? 问题答案: 查询和过滤器之间的主要区别在于评分。查询将返回每个文档具有相对排名得分的文档。过滤器没有。这种差异使过滤器更快,有两个原因。首先,它不会产生
问题内容: 我正在使用Elasticsearch 6.6,尝试根据在日期范围内传递给查询(Bool)的多个值(email_address)提取多个结果/记录。例如:我想根据他们的email_address(annie@test.com,charles@test.com,heman@test.com)以及时期(即project_date(2019-01-01))提取有关少数雇员的信息。 我确实使用了
问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在和之间的所有对象? 问题答案: 用 或者,如果你只是想按月过滤:
问题内容: 我正在尝试获取IP范围查询以处理一组文档,但是没有任何结果。 映射(我已经尝试了和): 数据看起来像这样(许多实例的值都不同) 现在,我去看了官方的ES文档,但是没有IP范围示例,但是我在Git上找到了一个不起作用的示例。它看起来如下: 当我用手指指住字段和地址时,上面的方法引发了一些令人鼓舞的解析错误,但最终没有返回结果。 我还尝试了标准范围语法: 这也没有返回结果。如何查询一系列I