当前位置: 首页 > 知识库问答 >
问题:

弹性搜索-按日期的范围过滤器不工作,

左丘季
2023-03-14

我试图过滤查询使用范围按日期,但它不工作。如果我使用gt, gte, lt, lte它返回零结果。如果我只使用gt或lt,它返回一些结果,但过滤器不工作。

我检查了uri上的数据类型http://mydomain.local:9200/logstash-2014.09.09/_mapping?pretty=true字段类型是正确的:

"original" : {
    "type" : "date",
    "format" : "dateOptionalTime"
}

以下是我在ElasticSearch中索引的结果示例:

{
    "_index" : "logstash-2014.09.08",
    "_type" : "iis",
    "_id" : "wxtnfpyjR4u7dhwlEAWevw",
    "_score" : 1.0,
    "_source":{"@version":"1","@timestamp":"2014-09-08T20:55:46.460Z",
               "type":"iis","original":"14-09-08 17:39:58"}
}

下面是我如何尝试执行查询:

{
    "query" : {
        "filtered" : {
            "filter" : {
                "range" : {
                    "original" : {
                        "gt" : "14-09-10"
                    }
                }
            }
        }
    }
}

有人知道我的问题出在哪里吗?如果我没有比今天(2014-09-09)更大的日期,为什么它会返回一些结果?

共有1个答案

段干玺
2023-03-14

我创建了一个具有相同映射的索引,并尝试在其中放入一条记录

curl -XPOST localhost:9200/test-1/x/_index -d '{"original": "14-09-08 17:39:58"}'

并得到一个错误:

{"error":"MapperParsingException[failed to parse [original]]; nested: MapperParsingException[failed to parse date field [14-09-08 17:39:58], tried both date format [dateOptionalTime], and timestamp number with locale []]; nested: IllegalArgumentException[Invalid format: \"14-09-08 17:39:58\" is malformed at \" 17:39:58\"]; ","status":400}`

因此,我相信您所处的环境中,#-#-#-#-#被解释为除yy mm dd之外的其他内容。

您使用的是Logstash,因此可以在原始字段进入变异之前对其进行修复,以使其明确无误。

mutate {
   replace => { original => "20%{original}" }
}
 类似资料:
  • 我正在尝试在Elastic 2中创建一个过滤索引别名。十、 以下是所有青少年的资料,不分性别。我只想在这个过滤器里看到雌性。 这就是我试图创建索引别名的原因: 我看了这个问题,似乎是相同的答案,但是我的JSON一定有问题。 Elasticsearch将范围和术语连接到相同的数组项

  • 我正在使用弹性搜索。我以前从未使用过的网络NEST客户端。我想做的是在得分前按日期范围过滤结果。 我使用对象初始值设定项语法,因为它最适合我。 我已经完成了我想要的: 这给了我一个JSON请求,就像我期望的那样: 但留档过滤查询说"弃用在2.0.0-beta1.改为使用bool查询,查询的必须子句和筛选器子句”。 因为这是我发现的唯一包含过滤器的方法,有没有更好的方法来使用嵌套对象初始值设定项语法

  • 这是回应的一部分 我有联系人号码和名字 现在我的第二个查询->我正在使用术语筛选器查询上面的联系电话

  • 我试图使用过滤器聚合来支持前端的多选择方面值。 我有颜色和深度滤镜。 滤色器保存值:黑色(5)、蓝色(3)、红色(2) 深度过滤器保持值:70mm(3)、60mm(5)、50mm(3) 当我在滤色器中选择黑色时,所有其他选项(蓝色,红色)都没有响应。 我尝试添加 谢了,Sree。

  • 问题内容: 我正在尝试通过键入日期范围来过滤包含时间戳的列表 例如: JSFIDDLE html javascript 我希望能够用值填充“发件人”字段:27-05-2010 并且“ To”字段的值为:29-07-2015 并仅获取该范围内的记录。 (示例中的第一条记录)。 谢谢分配阿维 问题答案: 您可以创建一个自定义过滤器来实现此目的。 JSFIDDLE html javascript 此外,