Kibana 显示“正在搜索...”,没有显示任何结果。 ElasticSearch 中存在已确认的数据

Posted

技术标签:

【中文标题】Kibana 显示“正在搜索...”,没有显示任何结果。 ElasticSearch 中存在已确认的数据【英文标题】:Kibana displays "Searching...", displays no results. Confirmed data exists in ElasticSearch 【发布时间】:2015-04-24 16:52:48 【问题描述】:

我正在尝试构建新索引,但在 Kibana 中遇到了一些问题。 “发现”页面已经显示“正在搜索...”几个小时了,仅在少数数据点上。我认为格式可能有问题?

索引页面显示 Average、Maximum 和 Minimum 都是数字,analyzed=false,indexed=true。 InstanceID, MetricName,Region 都是字符串,分析和索引 = True。 时间戳是一个日期

这是否表明问题可能是什么?

编辑: 来自警告的附加信息:“此字段上未启用文档值。这可能会导致可视化时过多的堆消耗”......并且...... "这是一个被分析的字符串字段。被分析的字符串是高度唯一的,可以使用大量的内存来分析"

编辑 2: 几点注意事项: 我的映射似乎无法正常工作。

Invoke-RestMethod "$URI/mytestindex/t2credbal" -Method post -body '
  "mytestindex": 
   "mappings": 
     "t2credbal":  
       "properties": 
        "timestamp": "type":"date",
        "minimum": "type":"number", "index":"no", "fielddata":  "format": "doc_values"  ,
        "maximum": "type":"number", "index":"no", "fielddata":  "format": "doc_values"  ,
        "average": "type":"number", "index":"no", "fielddata":  "format": "doc_values"     
               '

当我运行上面的命令时,我的字段显示为 mytestindex.mappings.t2credbal.properties.timestamp,而不仅仅是时间戳

我的值报告为 Records.Timestamp(根据下面的命令),具有正确的字段类型,所以我认为在我的情况下指定映射不是完全必要的。然而,Kibana 无法搜索和分析数据,尽管它在 ElasticSearch 中完全符合我的预期。

$json= Records:  [
   
    "Minimum":  280.91,
    "Maximum":  280.97,
    "Average":  280.94416666666672,
    "Timestamp":  "2015-04-27T13:12:00Z",
    "InstanceID":  "i-65e2b951",
    "MetricName":  "CPUCreditBalance",
    "Region":  "eu-west-1"
   

Invoke-RestMethod "$URI/mytestindex/t2credbal/" -Method Post -Body $json -ContentType 'application/json'

编辑#3

我将时间戳格式调整为在我的另一个索引中对我有用的格式;但是在尝试可视化时间戳字段时出现以下错误:

Error: Request to Elasticsearch failed: "error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures [S73SynuOQzW4NKbwPN7tTg][mytestindex][0]: SearchParseException[[mytestindex][0]: 
query[ConstantScore(*:*)],from[-1],size[0]: Parse Failure [Failed to parse source [\"size\":0,\"query\":\"query_string\":\"analyze_wildcard\":true,\"query\":\"*\",\"aggs\":\"1\":\"date_histogram\":\"field\":\"Records.Timestamp\",\"interval\":\"0ms\",\"pre_zone\":\"-04:00\",\"pre_zone_adjust_large_interval\":true,\"min_doc_count\":1,\"extended_bounds\":\"min\":1430158024806,\"max\":1430158924806]]]; nested: 
ElasticsearchIllegalArgumentException[Zero or negative time interval not supported]; [S73SynuOQzW4NKbwPN7tTg][mytestindex][1]: SearchParseException[[mytestindex][1]: query[ConstantScore(*:*)],from[-1],size[0]: Parse Failure [Failed to parse source [\"size\":0,\"query\":\"query_string\":\"analyze_wildcard\":true,\"query\":\"*\",\"aggs\":\"1\":\"date_histogram\":\"field\":\"Records.Timestamp\",\"interval\":\"0ms\",\"pre_zone\":\"-04:00\",\"pre_zone_adjust_large_interval\":true,\"min_doc_count\":1,\"extended_bounds\":\"min\":1430158024806,\"max\":1430158924806]]]; nested:
 ElasticsearchIllegalArgumentException[Zero or negative time interval not supported]; [S73SynuOQzW4NKbwPN7tTg][mytestindex][2]: SearchParseException[[mytestindex][2]: query[ConstantScore(*:*)],from[-1],size[0]: Parse Failure [Failed to parse source [\"size\":0,\"query\":\"query_string\":\"analyze_wildcard\":true,\"query\":\"*\",\"aggs\":\"1\":\"date_histogram\":\"field\":\"Records.Timestamp\",\"interval\":\"0ms\",\"pre_zone\":\"-04:00\",\"pre_zone_adjust_large_interval\":true,\"min_doc_count\":1,\"extended_bounds\":\"min\":1430158024806,\"max\":1430158924806]]]; nested: 
ElasticsearchIllegalArgumentException[Zero or negative time interval not supported]; [S73SynuOQzW4NKbwPN7tTg][mytestindex][3]: SearchParseException[[mytestindex][3]: query[ConstantScore(*:*)],from[-1],size[0]: Parse Failure [Failed to parse source [\"size\":0,\"query\":\"query_string\":\"analyze_wildcard\":true,\"query\":\"*\",\"aggs\":\"1\":\"date_histogram\":\"field\":\"Records.Timestamp\",\"interval\":\"0ms\",\"pre_zone\":\"-04:00\",\"pre_zone_adjust_large_interval\":true,\"min_doc_count\":1,\"extended_bounds\":\"min\":1430158024806,\"max\":1430158924806]]]; nested: 
ElasticsearchIllegalArgumentException[Zero or negative time interval not supported]; [S73SynuOQzW4NKbwPN7tTg][mytestindex][4]: SearchParseException[[mytestindex][4]: query[ConstantScore(*:*)],from[-1],size[0]: Parse Failure [Failed to parse source [\"size\":0,\"query\":\"query_string\":\"analyze_wildcard\":true,\"query\":\"*\",\"aggs\":\"1\":\"date_histogram\":\"field\":\"Records.Timestamp\",\"interval\":\"0ms\",\"pre_zone\":\"-04:00\",\"pre_zone_adjust_large_interval\":true,\"min_doc_count\":1,\"extended_bounds\":\"min\":1430158024806,\"max\":1430158924806]]]; nested: 
 ElasticsearchIllegalArgumentException[Zero or negative time interval not supported]; ]"
at http://myurl.com/index.js?_b=5930:42978:38
at Function.Promise.try (http://myurl.com/index.js?_b=5930:46205:26)
at http://myurl.com/index.js?_b=5930:46183:27
at Array.map (native)
at Function.Promise.map (http://myurl.com/index.js?_b=5930:46182:30)
at callResponseHandlers (http://myurl.com/index.js?_b=5930:42950:22)
at http://myurl.com/index.js?_b=5930:43068:16
at wrappedCallback (http://myurl.com/index.js?_b=5930:20873:81)
at wrappedCallback (http://myurl.com/index.js?_b=5930:20873:81)
at http://myurl.com/index.js?_b=5930:20959:26

编辑#4

修复了时间戳格式。 使用 _search 验证结果是否按预期显示?句法。 完全炸毁并重新创建了我的索引,验证了所有字段名称和类型都正确。 发现屏幕现在显示“无结果”而不是“正在搜索...”。 当我将时间间隔从 15 分钟更改为任何其他值时,我得到以下信息:

Discover: Cannot read property 'indexOf' of undefined
TypeError: Cannot read property 'indexOf' of undefined
at Notifier.error (myurl/index.js?_b=5930:45607:23)
at Notifier.bound (myurl/index.js?_b=5930:32081:21)
at myurl/index.js?_b=5930:118772:18
at wrappedCallback (myurl/index.js?_b=5930:20873:81)
at myurl/index.js?_b=5930:20959:26
at Scope.$eval (myurl/index.js?_b=5930:22002:28)
at Scope.$digest (myurl/index.js?_b=5930:21814:31)
at Scope.$apply (myurl/index.js?_b=5930:22106:24)
at done (myurl/index.js?_b=5930:17641:45)
at completeRequest (myurl/index.js?_b=5930:17855:7)

【问题讨论】:

您是否指定了要使用的分析仪?如果有,是哪一个?您可以通过访问_search?(进行精简搜索)找到您想要的字段 我没有指定一个...我对 ES 很陌生,所以我对它们还不太了解。我在上面发布的示例数据点来自 _search 结果 信息不足。如果需要,您可以使用完整的详细信息更新您的帖子:索引映射和一些用于插入数据的 curl 命令。这样它就可以重现。此外,您使用的是哪个版本的 elasticsearch 和 kibana? 进行了更多编辑。似乎没有必要指定映射,因为 ElasticSeach 正在正确分析字段并将它们列为 Kibana 中的正确类型(字符串、数字)。尝试指定它们似乎只会产生更多问题。 另外,我认为 Timestamp 字段可能是问题的根源。当我尝试可视化该字段时,Kibana 显示 0 个结果...我将尝试使用其格式。 【参考方案1】:

我能够通过更正 ElasticSearch 中的日期格式来解决该问题。我脚本中的 Powershell convertto-json 命令将时间戳对象转换为不与 Kibana 合作的日期格式。将日期格式设置为 yyyy-MM-hhThh:mm:ss 后,永无止境的“搜索...”问题消失了,但出现了新问题。

将单独发布该问题。

【讨论】:

跟进,我已经完全解决了问题。 Kibana 不喜欢我将统计信息作为“记录”的子类型输入,因此我调整了脚本以使用 foreach 语句单独发布我的 JSON 对象。通过按以下格式输入数据: "Minimum": 279.29, "Maximum": 279.43, "Average": 279.35833333333335, "Timestamp": "2015-04-30T08:17:00Z", "InstanceID": "i- d0be991a", "MetricName": "CPUCreditBalance", "Region": "ap-southeast-1" ,我能够按预期显示数据。 我也有同样的问题,但是上面的解决方法没有用。

以上是关于Kibana 显示“正在搜索...”,没有显示任何结果。 ElasticSearch 中存在已确认的数据的主要内容,如果未能解决你的问题,请参考以下文章

Kibana Alternatives

Kibana:如何为仪表盘添加当前时间显示的可视化

Kibana:如何为仪表盘添加当前时间显示的可视化

解决:kibana做图表时Visualize里对应的Y轴X轴里没有显示需要的Field

Kibana - 获取所有索引的列表

elasticksearch分词,导致kibana的url出现问题