es创建索引

前面使用filebeats收集日志

然后发送到logstash来清洗日志

最后发送到es的索引中。

这里我们看看如何创建索引。
实例:

PUT users
{
"mappings": {
"properties":{
"name":{
"type":"text"
},
"user_name":{
"type": "keyword"
},
"email":{
"type":"keyword"
}
}
}
}

上面创建了一个users的索引。但是我们这里不会单独的创建一个索引,因为单个索引数据量太大会导致检索查询的性能问题,所以我们按照时间序列来生成索引,所以我们创建索引模板。
PUT _template/template_1
{

"index_patterns": ["ubi*"],
"settings":{
"number_of_shards":1
},
"mappings":{

  "properties":{
    
    "host_name":{
      "type":"keyword"
    },
    "created_at":{
      "type":"date",
      "format":""
    }
  }

}
}
这样生成了一个template_1的索引模板,有两个字段 host_name created_at。

到我们这个业务统计来说,我们生成几个索引模板,分别为:
reg-*
login-*
output-*
cardlevelup-*
newrecharge-*
PUT _template/reg-*
{
"index_patterns": ["reg-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
}
}
}
}

登录的索引模板
PUT _template/login-*
{
"index_patterns": ["login-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"regtime":{
"type":"date",
"format":"epoch_second"
},
"lv":{
"type":"integer"
},
"rest_coin":{
"type":"integer"
}
}
}
}

消耗的索引模板
PUT _template/cost-*
{
"index_patterns": ["cost-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"cost":{
"type":"integer"
},
"itemid":{
"type":"integer"
}
}
}
}

新手引导进度索引模板
PUT _template/guide-*
{
"index_patterns": ["guide-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"process":{
"type":"integer"
}
}
}
}

卡牌升级索引模板
PUT _template/cardlevelup-*
{
"index_patterns": ["cardlevelup-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"cardid":{
"type":"integer"
},
"lvto":{
"type":"integer"
}
}
}
}

产出的索引模板
PUT _template/output-*
{
"index_patterns": ["output-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"itemid":{
"type":"integer"
},
"number":{
"type":"integer"
}
}
}
}

充值的索引模板
PUT _template/charge-*
{
"index_patterns": ["charge-*"],
"settings":{
"number_of_shards":5
},
"mappings":{
"properties":{
"logtype":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"os":{
"type":"keyword"
},
"channel":{
"type":"keyword"
},
"version":{
"type":"keyword"
},
"udid":{
"type":"keyword"
},
"source":{
"type":"keyword"
},
"timestamp":{
"type":"date",
"format":"epoch_second"
},
"networkType":{
"type":"keyword"
},
"ip":{
"type":"ip"
},
"area":{
"type":"keyword"
},
"money":{
"type":"integer"
}
}
}
}

注意,这里的date支持三种模式,一种是字符串的日期表示,一种是从1970年到现在的毫秒数,一种是从1970年到现在的秒数,之前我没设置format的这个字段,于是默认就是毫秒,导致结果不太准确。 这里设置了format:epoch_second就是秒的形式来设置的。