我使用metricbeat获取docker性能数据,我正在尝试使用Docker性能数据生成Dashboards。
我在metricbeat.template.json中启用了fielddata:true:
然后我重新开始Metricbeat和Kibana并开始了。 问题仍然存在。这是三个错误:
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public CacheManager cacheManager(@SuppressWarnings("rawtypes") RedisTemplate redisTemplate) {
return new RedisCacheManager(redisTemplate);
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer( jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
任何人都可以帮忙解决问题吗?
提前致谢。
答案 0 :(得分:0)
您可能需要更改字段mappings
(name,id,image
),方法是将 fielddata 设置为 true 。您的映射可能如下所示:
{
"mappings": {
"your_type": {
"properties": {
"name": {
"type": "text",
"fielddata": true
},
"id": {
"type": "integer",
"fielddata": true
},
"image": {
"type": "text",
"fielddata": true
}
}
}
}
}
同时查看doc。希望这有帮助!
修改强>
我想问题是使用文字类型进行聚合,理想情况下会导致上述异常。文本类型字段本质上是analyzed
,通常可用于全文搜索。如果您考虑使用未分析 keyword
进行聚合目的,这可能会对您有所帮助。您还可以阅读有关此here的更多信息,并查看此ticket,其中涉及同样的争议。
答案 1 :(得分:0)
这是我尝试的映射:
PUT /metricbeat-*/_mapping/docker
{
"properties":{
"container":{
"type":"text",
"fields":{
"name":{
"type": "text",
"analyzer": "standard",
"fielddata": true
},
"id":{
"type":"keyword"
},
"image":{
"type": "text",
"fielddata": true
}
}
}
}
}
映射有效。 但是,我现在得到一个不同的错误 - Courier Fetch:40个分片中的30个失败