gpt4 book ai didi

elasticsearch - Elastic Search query_shard_exception无法在日期时间字段执行查询

转载 作者:行者123 更新时间:2023-12-03 02:31:53 25 4
gpt4 key购买 nike

最近,我使用Kibana从ElasticSearch获取数据。

有那个节点:

  { "_index" : "impasti",
"_type" : "impasti",
"_id" : "2019-01-02T15:25:20",
"_score" : 1.9806902,
"_source" : {
"sensor" : "Temperature",
"mac_address" : "",
"time" : "2019-01-02T14:25:19.728709Z",
"unit" : "'C",
"value" : 20.937
}},

我尝试通过时间字段,日期时间范围或确切地日期时间获取数据。
但是当我运行这个查询
POST /impasti/impasti/_search
{'query':{
"query_string": {
"default_field": "time",
"query": "2019-01-02T14:25:19.728709Z"
}
}
}

响应是这样的错误:
"type": "query_shard_exception" "reason": "Failed to parse query [2019-01-02T14:25:19.728709Z]",

错误在哪里?

谢谢你们

最佳答案

错误指出,为了使ES查询解析器理解该值是date而不是string/text/keyword类型,您需要做更多的事情:

此外,日期字段通常用于特定范围。以下是通过添加Range功能可以完成的操作

使用query_string:

POST your_index_name/_search
{
"query": {
"query_string": {
"default_field": "time",
"query": "time:[2019-01-02T14:25:19.728709Z TO 2019-01-02T14:25:19.728709Z]"
}
}
}

通常,它是 [min To max],用于在指定的时间范围内查找文档,但是如果您要查找该日期的文档,请为 minmax提及相同的日期。

使用范围 bool(boolean) 查询:
POST you_index_name/_search
{
"query": {
"bool": {
"must": [
{
"range": {
"mydate": {
"gte": "2019-01-02T14:25:19.728709Z",
"lte": "2019-01-02T14:25:19.728709Z"
}
}
}
]
}
}
}

上面是使用查询DSL的 Range Query的示例

另外,您还可以通过 Term Query使用简单的匹配查询来获取所需的内容,这是因为在内部将其存储为 long值。
POST your_index_name/_search
{
"query": {
"term": {
"mydate": "2019-01-02T14:25:19.728709Z"
}
}
}

注意: Elasticsearch在内部将日期值以 long数据类型的形式存储在此 link中提到的倒排索引中

关于elasticsearch - Elastic Search query_shard_exception无法在日期时间字段执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59772632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com