首页 > 解决方案 > Elasticsearch 索引映射不起作用

问题描述

我是弹性搜索的新手,并尝试阅读我能找到的所有文档,但我很难理解索引创建的映射行为。

我有 AWS CloudWatch 通过 Lambda 订阅将日志从我的应用程序导入 ES。

我正在使用 Kibana 中的开发工具 UI(在 AWS 上)与 ES 对话。运行以下 PUT 命令可以让我设置一个新索引。但是,创建的文档没有我在映射中设置的任何字段。

PUT cwl-2018.08.09
{
  "settings" : {
      "index" : {
          "number_of_shards" : 1
      }
  },
  "mappings": {    
    "test-log-group": {     
      "_source": {
        "enabled": true
      },
      "properties": {
        "level": { "type": "text" },
        "message": { "type": "text" },      
        "logger": { "type": "text" },
        "url": { "type": "text" }      
      }
    }
  }
}

下面是通过 CloudWatch 发送到 ES 的示例文档

{
    "_index": "cwl-2018.08.09",
    "_type": "test-log-group",
    "_id": "34205467001770174210014068820960982481947713872776593408",
    "_score": 1,
    "_source": {
      "time": "2018-08-09 15:49:48.1949",
      "level": "INFO",
      "message": "Test",
      "logger": "Logger",
      "applicationName": "WebSite",
      "url": "/test",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36",
      "controller": "Home",
      "action": "Test",
      "@id": "34205467001770174210014068820960982481947713872776593408",
      "@timestamp": "2018-08-09T14:49:48.195Z",
      "@message": """{ "time": "2018-08-09 15:49:48.1949", "level": "INFO", "message": "Test", "logger": "Logger", "applicationName": "WebSite", "url": "\/test", "userAgent": "Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/68.0.3440.84 Safari\/537.36", "controller": "Home", "action": "Test" }""",
      "@owner": "751777751431",
      "@log_group": "test-log-group",
      "@log_stream": "2018/08/09T15.12.19 - 5bb0c1a1-9405-4fc3-98ec-f8c98553f4a8"
    }
  }

我希望在“_source”字段之外的文档中看到名为“level”、“message”、“logger”和“url”的字段。

我的映射错了吗?
我是否误解了我应该能够在文档结构方面创建什么?

标签: amazon-web-serviceselasticsearchkibanaamazon-cloudwatch

解决方案


推荐阅读