默认情况下,在文本字段上禁用字段数据

时间:2018-07-31 14:33:41

标签: elasticsearch kibana aggregation elasticsearch-5 kibana-5

我遇到了一个经典问题,收藏夹,关于SO的页面或其他任何问答和论坛都没有帮助我。

我需要从字符串中提取参数“ wsProcessingElapsedTimeMS”的数值,例如(其中的参数包含在消息字段中):

2018-07-31 07:37:43,740|DEBUG|[ACTIVE] ExecuteThread: '43' for queue: 
'weblogic.kernel.Default (self-tuning)' 
|LoggerHandler|logMessage|sessionId=9AWTu
wsOperationName=FindBen wsProcessingEndTime=2018-07-31 07:37:43.738 
wsProcessingElapsedTimeMS=6 httpStatus=200 outgoingAddress=172.xxx.xxx.xxx

并不断出错:

"type":"illegal_argument_exception","reason":"Fielddata is disabled on text 
fields by default. Set fielddata=true on [message] in order to load fielddata 
in memory by uninverting the inverted index. Note that this can however use 
significant memory. Alternatively use a keyword field instead."

要点是,我已经通过以下方式运行了查询(如果需要的话,可以通过Kibana GUI中的Dev Tools进行运行)以将字段标记为fielddata:

PUT my_index/_mapping/message
{
   "message": {
      "properties": {
        "publisher": {
          "type": "text",
          "fielddata": true
        }
      }
   }
}

,它返回了简要信息:

{
  "acknowledged": true
}

之后,我尝试重建索引,如下所示:

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "my_index"
  },
  "dest": {
    "index": "my_index"
  }
}

(已设置?wait_for_completion = false标志,因为否则会超时;现在系统中有很多数据)。

最后,执行了上述步骤之后,我还尝试重新启动了kibana和elasticsearch服务(流程)以强制重新索引(该工具确实很长)。

此外,使用“ message.keyword”代替“ message”(如官方文档中所建议的那样)也无济于事-在大多数情况下,它只是空白。 我正在使用Kibana访问ElasticSearch引擎。 ElasticSearch版本5.6.3 Kibana v.5.6.3 Logstash版本5.5.0

即使使用其他插件(如果它们具有与上述Kibana / ElasticSearch / Logstash版本兼容的版本,因为我现在不能将其更新为新版本),任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

PUT your_index/_mapping/your_type
{    
    "your_type": {
      "properties": {
        "publisher": {
          "type": "text",
          "fielddata": true
        }
      }
    }
}