这两天一直在看elasticsearch相关的内容,看到mapping这一块,就折腾了下。

一般情况下,我们不需要对elasticsearch的mapping进行设置,但如果希望对索引使用自定义的管理,那么就需要了解这一块的内容了。这里是我在Logstash中对elasticsearch的设置.

这里是Logstash的配置:

output {

  if [type] == "test" {
    elasticsearch {
      hosts => ["10.1.0.12:9200"]
        index => "test"
      document_type => "%{[@metadata][type]}"
      manage_template => true
      template_overwrite => true
      template_name => "json_php_mapping"
      template => "/usr/local/services/logstash/templates/test.json"
}
}
}

这里注意:index,template_name,template

    index:  在elasticsearch上索引的名字

    template_name: 使用elasticsearch上_template下的模板(与template关联不大)

    template:在_template下生成模板。

下面是test.json:

{
  "template": "test",
  "settings":{
  "index.number_of_shards": 5,
  "number_of_replicas": 1,
  "index.refresh_interval":"60s"
  },
  "mappings" : {
    "_default_": {
    "_all": {"enabled": false},
    "dynamic": true,
    "date_detection": true,
    "dynamic_date_formats": [
    "date_optional_time||epoch_millis||epoch_second",
    "yyyy-MM-dd'T'HH:mm:ssZZ.SSS||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS"
    ],
    "dynamic_templates": [{
      "date":{
        "match_mapping_type": "date",
        "match": "date_*",
        "mapping":{
          "type": "date"
          }
        }
     },{
      "strings": {
        "match_mapping_type": "string",
        "match": "s_*",
        "mapping":{
        "type": "keyword",
        "ignore_above": 256
         }
        }
     },{
      "long": {
        "match_mapping_type":"*",
        "match": "l_*",
        "mapping":{
          "type": "integer"
           }
          }
      },
      {
      "double": {
        "match_mapping_type": "*",
        "match": "d_*",
        "mapping": {
        "type": "double"
        }
      }
     },
      {
        "analyzer": {
          "match": "t_*",
          "mapping": {
          "type": "text",
            "index": true,
            "analyzer": "english"
            }
          }
      },
      {
        "ip": {
          "match_mapping_type": "*",
          "match": "ip_*",
          "mapping": {
            "type": "ip"
            }
           }
        }
       ]
      }
    }
}

参数解释:

  template: 这里是模板的名字,可以在kibana中使用:GET _template 来查看es下的所有模板

  settings: 一般设置分片。 index.refresh_interval 一般是用户将segments刷新到磁盘缓存的时间间隔,默认是1s

  _default_:  index中的type中使用默认的这个mapping.注意:在6.0版本后特性被移除

  dynamic: 开启动态模板

  date_detection: 打开时间格式的识别

  dynamic_date_formats: 可以识别的时间格式

  dynamic_templates下定义: 

  "dynamic_templates": [
{
"my_template_name": {
... match conditions ...
"mapping": { ... }
}
},
...
]

  my_template_name:就是给下面match取得名字,没什么作用。

  match conditions: (https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html)

    1. match_mapping_type :匹配字段的类型。通过类型匹配字段

    2. match: 匹配字段,通过正则匹配字段

    3. match_pattern: 一般与上面的match使用,用于正则

 还有一些插入时间es自动生成的,如@timestamp,_type,version等等,差不多就这样了。

  官网关于这一块介绍的很容易理解,建议看官网,下面的连接是本文中最关键的:https://www.elastic.co/guide/en/elasticsearch/reference

 

   

elasticsearch mapping简单介绍的更多相关文章

  1. ELK学习实验004:Elasticsearch的简单介绍和操作

    一 集群节点 Elstaicsearch的集群是由多个节点组成都,通过cluster.name设置集权名称,比能切用与区分其他的集群,每个节点通过node.name指定节点 在Elasticsearc ...

  2. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  3. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  4. ElasticSearch API 简要介绍

    调用其API会返回很多信息,例如集群的信息,节点的信息等 检查集群的状态----Restful API说明 1:检查集群状态信息 2:管理集群 3:执行 增删改查 命令 4:执行高级命令 Restfu ...

  5. Elasticsearch教程(五) elasticsearch Mapping的创建

    一.Mapping介绍 在Elasticsearch中,Mapping是什么? mapping在Elasticsearch中的作用就是约束. 1.数据类型声明 它类似于静态语言中的数据类型声明,比如声 ...

  6. springboot简单介绍

    1.springboot简单介绍 微服务架构 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框架使用了特定的方 ...

  7. Frame Relay - 简单介绍及基本配置

    Frame Relay如今越来越不流行了,只是在过去的设计中被广泛应用. 所以工作上还是能常常见到的, 这篇博文从二层简单总结下FR的一些概念 在介绍Frame Relay之前,先了解下广播介质和非广 ...

  8. Hibernate学习(1)简单介绍

    1.什么是Hibernate?           首先,Hibernate是数据持久层的一个轻量级框架.数据持久层的框架有非常多比方:iBATIS,myBatis,Nhibernate,Siena等 ...

  9. Java泛型使用的简单介绍

    目录 一. 泛型是什么 二. 使用泛型有什么好处 三. 泛型类 四. 泛型接口 五. 泛型方法 六. 限定类型变量 七. 泛型通配符 7.1 上界通配符 7.2 下界通配符 7.3 无限定通配符 八. ...

随机推荐

  1. HTML5 canvas自制画板

    找到一个画板的插件,很好用,点击下载  ,页面很简单,但是呢,貌似不适用于手机端,,,

  2. C语言传递二维数组

    方法一, 形参给出第二维的长度. 例如: #include <stdio.h> ] ) { int i; ; i < n; i++) printf("/nstr[%d] = ...

  3. java NIO - DirectBuffer 和 HeapBuffer

    问题 : DirectBuffer 属于堆外存,那应该还是属于用户内存,而不是内核内存? FileChannel 的read(ByteBuffer dst)函数,write(ByteBuffer sr ...

  4. JavaScript学习笔记之二

    一 js与json数据格式的转换:序列号与反序列化 JSON.stringify(jsobj, '  ');//将js的obj转换为json对象: JSON.parse()把json对象变成一个Jav ...

  5. 【C语言】找出1000以内所有的素数

    #include<stdio.h> int main() { int i, j, t; ; i <= ; i++) { ; ; j < i; j++) { ) { t = ; ...

  6. 关于this和base的区别

    一句话总结:在有冲突得时候,base和this能够进行区分,在没有冲突得时候,是一样得. 基于成员调用 基于构造方法 参考: http://www.cnblogs.com/reommmm/archiv ...

  7. Django 单元测试笔记

    引言 关于单元测试的基本知识这里不再讲述,简单一句话:单元测试是用一段代码去测试另一段代码.最常用的框架是unittest,这是python的单元测试框架,而django单元测试框架test.Test ...

  8. [面试必备]深入理解Java的volatile关键字

    前言 在Java并发编程中,volatile关键字有着至关重要的作用,在面试中也常常会是必备的一个问题.本文将会介绍volatile关键字的作用以及其实现原理. volatile作用 volatile ...

  9. PyQt5数据可视化

    1.下载PyQtGraph模块 Windows上下载: pip install pyqtgraph Linux上下载: pip3 install pyqtgraph MacOS上下载: pip3 in ...

  10. jQuery结合CSS实现手风琴组件(2)----利用seajs实现静态资源模块化引入

    1. 目录结构(webStrom) 2. 代码 1.html <!DOCTYPE html> <html lang="en"> <head> & ...