解决Kibana(OpenSearch)某些字段无法搜索问题
背景
最近在OpenSearch查看线上日志的时候,发现某个索引下有些字段无法直接在界面上筛选,搜索到也不高亮,非常的不方便,就像下面这样
字段左侧两个筛选按钮禁用了无法点击,提示
Unindexed fields can not be searched
右侧则有感叹号提示
No cached mapping for this field. Refresh field list from the Management > Index Patterns page
浅析
索引模式(Index Pattern)是用于定义OpenSearch中索引的元数据信息的。它包含了索引中包含的所有字段的名称、数据类型、分析器、存储方式等信息。当用户进行搜索或聚合操作时,Kibana需要根据字段映射信息来解析查询请求,以便正确地查询并返回结果。
"No cached mapping for this field"提示意味着无法找到字段映射信息,而"Unindexed fields can not be searched"则是由于没有正确的字段映射信息导致无法搜索未索引字段。这通常发生在索引模式被修改后,但是缓存还没有更新时,或者在新索引被创建但是还没有刷新字段列表时。
解决这个问题的方法是在Kibana的管理页面中刷新字段列表,以确保所有字段的映射信息都是最新的。在这个页面中,Kibana会缓存映射信息以提高性能,如果新加入了一个字段,则需要刷新字段列表才能使其可搜索。
解决
在OpenSeach里,从Stack Management
进入 Index patterns
页面,找到对应的索引模式,点击右上角刷新按钮
大部分情况刷新完问题就解决了,但是实际上也可能会引入新的问题,比如下面这样直接搜索报错:
F12查看请求,可以看到opensearch返回了400
错误信息:
Trying to retrieve too many docvalue_fields. Must be less than or equal to: [100] but was [215]. This limit can be set by changing the [index.max_docvalue_fields_search] index level setting
由于我们刷新了字段列表,导致搜索的字段超过了默认100的上限,最简单的方法是在【Dev Tools】里用下面REST API上调该索引模式的max_docvalue_fields_search
PUT /your-index-*/_settings
{
"index" : {
"max_docvalue_fields_search" : 300
}
}
成功后会返回"acknowledged" : true
。
这些做完之后,在OpenSearch上查看、筛选日志就一切正常了:)
参考
作者: 马行空的博客
出处: https://www.cnblogs.com/netry/p/openseach_kibana_unindexed_fileds.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。