身安不如心安,屋宽不如心宽 。

7.14 Kibana 默认时间排序

Kibana | 作者 Tsukiand | 发布于2021年08月24日 | 阅读数:3951

问题描述:Kibana 升级到7.14 后查询日志的时候发现排序后的数据不连续,感觉升降序都不对。Inspect查看kibana的查询如下。发现排序里面是两个字段一个是默认的@timestamp字段,一个是我们这里使用的更精确的字段@ts_nano,但是这@timestamp竟然是desc(实际上我在kibana上选择的排序是升序,对应到@ts_nano字段是asc是对的,但是为什么会出现@timestamp的desc排序)
{
"track_total_hits": true,
"size": 10000,
"sort": [
{
"[b]@timestamp[/b]": {
"order": "[b]desc[/b]",
"unmapped_type": "boolean"
}
},
{
"[b]@ts_nano[/b]": {
"order": "[b]asc[/b]",
"numeric_type": "date_nanos",
"unmapped_type": "boolean"
}
}
],
"version": true,
"fields": [
{
"field": "*",
"include_unmapped": "true"
},
{
"field": "@timestamp",
"format": "strict_date_optional_time"
},
{
"field": "@ts_nano",
"format": "strict_date_optional_time_nanos"
}
],
"aggs": {
"2": {
"date_histogram": {
"field": "@ts_nano",
"fixed_interval": "10m",
"time_zone": "Asia/Shanghai",
"min_doc_count": 1
}
}
},
"script_fields": {},
"stored_fields": [
"*"
],
"runtime_mappings": {},
"_source": false,
"query": {
"bool": {
"must": [],
"filter": [
{
"bool": {
"should": [
{
"query_string": {
"fields": [
"message"
],
"query": "*\\2\\3\\3\\7\\4\\7\\6\\4\\6\\3\\7\\8\\9\\3\\8\\3\\6\\8*"
}
}
],
"minimum_should_match": 1
}
},
{
"range": {
"@ts_nano": {
"gte": "2021-08-23T20:56:30.823Z",
"lte": "2021-08-24T11:56:30.823Z",
"format": "strict_date_optional_time"
}
}
},
{
"match_phrase": {
"module": "xy"
}
}
],
"should": [],
"must_not": []
}
},
"highlight": {
"pre_tags": [
"@kibana-highlighted-field@"
],
"post_tags": [
"@/kibana-highlighted-field@"
],
"fields": {
"*": {}
},
"fragment_size": 2147483647
}
}

我查看了之前的release note kibana 在7.4之后就支持多个字段的排序,但是这样的排序结果我觉得不是我期望的情况。我的想法是我既然使用@ts_nano字段作为时间字段,那么排序的时候直接使用@ts_nano进行排序即可,为什么要带上默认的@timestamp。
已邀请:

Tsukiand - 90后

赞同来自:

自己回复一下这个问题 首先这是个Bug 详见我提的Issue https://github.com/elastic/kibana/issues/117617
 
问题说明:
由于不同index pattern的时间字段不一样,切换index pattern的时候,kibana的bug会让排序同时包含两个index pattern的时间字段(如果两个index pattern都使用相同的时间字段就不会存在这个问题),那么这时候排序就会异常。
解决办法:
Optional1: 所有index pattern都使用相同的时间字段
Optional2: 每次切换index pattern后,点击右上角的 “NEW” 

要回复问题请先登录注册