如何用Elasticsearch中的“Others”替换所有空/空值?

时间:2017-10-21 08:43:01

标签: elasticsearch kibana elasticsearch-plugin

当我创建一个饼图时,我希望用myfield替换字段""的所有空值(即等于"Others")。我怎么能在Kibana做到?

如果在Kibana中无法做到,那么我该怎样才能使用Elasticsearch。

enter image description here

更新

我执行了这个查询,它没有给我任何错误:

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"
          }
        }
      }
    }
}

2 个答案:

答案 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";}

然后在可视化中使用此新字段。