如何为Elasticsearch构建父/子映射?

时间:2012-12-21 08:59:24

标签: elasticsearch

我尝试使用以下映射来索引我的数据:

{  
  "mappings": {
   "chow-demo": {
    "properties": {
     "@fields": {
      "dynamic": "true",
      "properties": {
        "asgid": {
          "type": "string",
          "analyzer": "keyword"
        },
        "asid": {
          "type": "long"
        },
        "astid": {
          "type": "long"
        },
        "clfg": {
          "analyzer": "keyword",
          "type": "string"
        },
        "httpcode": {
          "type": "long"
        },
        "oid": {
          "type": "string"
        },
        "onid": {
          "type": "long"
        },
        "ptrnr": {
          "analyzer": "keyword",
          "type": "string"
        },
        "pguid": {
          "analyzer": "keyword",
          "type": "string"
        },
        "ptid": {
          "type": "long"
        },
        "sid": {
          "type": "long"
        },
        "src_url": {
          "analyzer": "keyword",
          "type": "string"
        },
        "title": {
          "analyzer": "keyword",
          "type": "string"
        },
        "ts": {
          "type": "long"
        }
       }
      },
      "@timestamp": {
       "format": "dateOptionalTime",
       "type": "date"
      },
      "@message": {
       "type": "string"
      },
      "@source": {
       "type": "string"
      },
      "@type": {
       "analyzer": "keyword",
       "type": "string"
      },
      "@tags": {
       "type": "string"
      },
      "@source_host": {
       "type": "string"
      },
      "@source_path": {
       "type": "string"
      }
     }
    },
   "chow-clfg": {
    "_parent": {
     "type": "chow-demo"
    },
    "dynamic": "true",
    "properties": {
     "_ttl": {
      "enabled": true,
      "default": "1h"
     },
     "clfg": {
      "analyzer": "keyword",
      "type": "string"
     },
     "@timestamp": {
      "format": "dateOptionalTime",
      "type": "date"
     },
     "count": {
      "type": "long"
     }
    }
   }
  }
}

我尝试填充父类型“chow-demo”而不填充子类型“chow-clfg”,并且文档拒绝索引。 (没有文件被索引到Elasticsearach)

当我取出“chow-clfg”的子映射时,它会像往常一样正确编制索引。因此,我有以下问题:

  1. 我的映射结构错了吗?
  2. 在成功编制索引数据之前,是否必须同时将父级和子级编入索引?
  3. 在我的项目进展中真的需要帮助这个问题!谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 是的,您的映射是错误的。 _ttl元素应该在chow-clfg类型中高一级。换句话说,_ttl应与_parent处于同一级别。但是,我不太确定这个问题会如何影响您的索引能力。

  2. 不必将父母和孩子编入索引。