当我创建一个饼图时,我希望用myfield
替换字段""
的所有空值(即等于"Others"
)。我怎么能在Kibana做到?
如果在Kibana中无法做到,那么我该怎样才能使用Elasticsearch。
更新
我执行了这个查询,它没有给我任何错误:
GET myindex/entry/_update_by_query
{
"query":{
"term": {
"myfield.keyword": {
"value": ""
}
}
},
"script":{
"inline": "ctx._source.myfield = 'Other'",
"lang": "painless"
}
}
我得到了这个输出:
{
"took": 5,
"timed_out": false,
"total": 0,
"updated": 0,
"deleted": 0,
"batches": 0,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0,
"failures": []
}
但是,当我检查myfield
的值时,我再次获得值""
,而不是Other
。
GET myindex/_search?
{
"size":0,
"aggs": {
"months": {
"terms" : {
"field": "myfield"
}
}
}
}
这是我的索引映射:
PUT /myindex
{
"mappings": {
"entry": {
"_all": {
"enabled": false
},
"properties": {
"Id": {
"type":"keyword"
},
"Country": {
"type":"keyword"
},
"myfield": {
"type":"keyword"
},
"Year": {
"type":"integer"
},
"Counter": {
"type":"integer"
}
}
}
}
}
答案 0 :(得分:1)
据我所知,这不能在Kibana结束时完成。您可以使用"其他"更新所有空字段文档。在Elasticsearch索引中。
要在Elasticsearch端更新,您可以使用Update By Query API。以下是更新代码/查询。
GET myindex/entry/_update_by_query
{
"query":{
"term": {
"myfield": {
"value": ""
}
}
},
"script":{
"inline": "ctx._source.myfield = 'Other'",
"lang": "painless"
}
}
答案 1 :(得分:0)
您可以在Kibana中尝试这种无痛脚本,它将在运行时为您的索引创建一个新的字符串类型脚本字段。
选择:管理 - > name_of_your_index - >脚本字段 - >添加脚本字段。
下一步:给脚本命名并将其类型设置为" string"。
然后:
def source = doc['name_of_the_field'].value;
if (source != null) { return source; }
else { return "Other";}
然后在可视化中使用此新字段。