精华内容
下载资源
问答
  • ELK系列之如何改变ES之前数据类型 1、前言 公司有一个部门近期修改了ES的索引模板,我们运维部门在修改的时候有一个字段mid没有指定类型,使用默认的类型,结果导致之前的查询不可用了,查询报错; 报错信息如下:...
    ELK系列之如何改变ES之前数据的类型
    1、前言

    公司有一个部门近期修改了ES的索引模板,我们运维部门在修改的时候有一个字段mid没有指定类型,使用默认的类型,结果导致之前的查询不可用了,查询报错;
    报错信息如下:
    3 of 76 shards failed

    2、查询问题

    开始也是没有头脑,无从下手,然后就去问度娘,也是无果;最后我重新拆分查询条件,发现有个字段mid有问题,此时我查看此时段的索引信息,发现mid使用的是默认类型,才恍然大悟;

    ### 查询索引模板   
    GET /_template/logstash_jump  
    ### 查询指定索引的模板信息   
    GET /logstash_jump_mrwso_2020_03_14/_mapping    
    

    3、处理问题

    我重新修改ES的索引模板信息如下:

    PUT /_template/logstash_jump  
    {  
        "index_patterns" : ["logstash_jump*"],  
        "order" : 1,  
        "settings" : {  
            "number_of_shards": 4,  
            "number_of_replicas" : 1  
        },  
    "mappings" : {  
          "properties" : {  
            "visitip" : {   
              "type" : "keyword"  
            },  
     "visittime" : {  
              "format" : "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd",  
              "type" : "date"
            },  
            "visit_time_str" : {  
              "type" : "keyword"   
            },   
            "urltype" : {  
              "type" : "keyword"  
            },  
            "code" : {  
              "type" : "keyword"  
            },  
            "request_type" : {  
              "type" : "keyword"  
            },   
            "city" : {  
              "type" : "keyword"   
            },  
            "visit_type" : {  
              "type" : "keyword"  
            },   
            "remark" : {  
              "type" : "keyword"  
            },  
            "sys" : {  
              "type" : "keyword"  
            },  
            "type" : {  
              "type" : "keyword"  
            },   
            "ua" : {  
              "type" : "keyword"  
            },  
            "imp_id" : {  
              "type" : "keyword"  
            },  
            "brower" : {  
              "type" : "keyword"  
            },  
            "apk_diversion" : {
              "type" : "keyword"
            },  
            "province" : {
              "type" : "keyword"
            },  
            "server_ip" : {
              "type" : "keyword"
            },  
            "iframe_type" : {
              "type" : "keyword"
            },   
            "serverip" : {
              "type" : "keyword"
            },   
            "from" : {
              "type" : "keyword"
            },  
            "mid" : {
              "type" : "keyword"
            },   
            "sem_source" : {
              "type" : "keyword"
            },  
            "types" : {
              "type" : "keyword"
            },  
            "visit_time" : {
              "type" : "keyword"
            },  
            "ad_response" : {
              "type" : "keyword"
            },  
            "ad_form" : {
              "type" : "keyword"
            },  
            "cookie_id" : {
              "type" : "keyword"
            },   
            "url" : {
              "type" : "keyword"
            },   
            "visit_ip" : {
              "type" : "keyword"
            },   
            "dwzDiversion_rule_config_json" : {
              "type" : "keyword"
            },  
            "province_id" : {
              "type" : "keyword"
            },  
            "refer" : {
              "type" : "keyword"
            },   
            "device_brand" : {
              "type" : "keyword"
            },  
            "global_log_id" : {
              "type" : "keyword"
            },  
            "domain" : {
              "type" : "keyword"
            },  
            "longurl" : {
              "type" : "keyword"
            },  
            "member_type" : {
              "type" : "keyword"
            },   
            "request_id" : {
              "type" : "keyword"  
            },
            "desc" : {  
              "type" : "keyword"  
            }  
          }  
        },  
        "aliases" : { }  
      }  
    
    3、处理异常数据

    ES创建好了mapping后是不允许修改字段类型的,要是我们想修改字段类型怎么办呢?
    我们可以采用reindex的方法实现,就是创建一个新的mapping,里面的字段类型按照新的类型定义,然后使用reindex的方法把原来的数据拷贝到新的index下面;

    [root@VM_185_109_centos ~]# curl  -X POST "127.0.0.1:9200/_reindex" -H 'Content-Type: application/json' -d'  
    > {   
    >   "source": {  
    >     "index": "logstash_jump_suoim_2020_03_12"  
    >   },  
    >   "dest": {  
    >     "index": "logstash_jump_suoim_2020_02_12"  
    >   }  
    > }'  
    

    说明:此时查询logstash_jump_suoim_2020_02_12的mid数据类型就正常了;

    4、总结

    我们在处理突发问题的时候有可能一时间无从下手,但是我们一定要进行下去,一定要开头,万事开头难,当我们开头处理的时候就会有可能柳暗花明,处理问题的过程中,我们有可能查询到原因。
    实话:这个偏文档解决了如何创建ES的索引模板,如何迁移索引数据、如何改变数据的类型。

    展开全文
  • JavaScript数据类型

    2019-11-28 13:53:52
    JavaScript数据类型 基本数据类型 数值型(Number): 常规数字和NaN(不是数字),Infinty(正无穷,加-就是负无穷) 字符串(String): 单引号,双引号和反引号(模板字符串)包起来的 布尔值(boolean): true,false 空...

    JavaScript数据类型

    • 基本数据类型
      • 数值型(Number): 常规数字和NaN(不是数字),Infinty(正无穷,加-就是负无穷)
      • 字符串(String): 单引号,双引号和反引号(模板字符串)包起来的
      • 布尔值(boolean): true,false
      • 空对象指针(null)
      • 未定义(undefined)
      • Symbol(ES6)
      • BigInt(ES10, V8引擎v6.7 默认启用对 BigInt 的支持 )
    • 引用数据类型
      • 对象数据类型(Object)
        • { } 普通对象
        • [ ]数组对象
        • /^$/ 正则对象
        • Math 数学函数对象
        • Date 日期
        • Error 错误
        • 函数数据类型(function)

    JavaScript六大数据类型: Number, String , Boolean, null, undefined, Object
    JavaScript ES6新增数据类型: Symbol
    JavaScript ES10新增数据类型: BigInt

    展开全文
  • 之前在没有创建索引模板的时候,直接通过logstash往es里塞数据,其中一些字段的类型并不符合我们需要,这个时候就需要去修改字段的映射类型了。 正文 es不支持直接修改字段类型,解决思路: 新建临时索引,执行字段...

    前言

    之前在没有创建索引模板的时候,直接通过logstash往es里塞数据,其中一些字段的类型并不符合我们需要,这个时候就需要去修改字段的映射类型了。

    正文

    es不支持直接修改字段类型,解决思路:

    1. 新建临时索引,执行字段类型,复制数据
    2. 删除旧索引,重建同名索引,从临时索引复制数据
    #获取旧索引的字段映射
    GET /users/_mapping
    
    #创建临时索引带映射
    PUT /users_temp
    {
        "mappings": {
    		"user": {
    			"properties": {
    				"age": {
    					"type": "long"
                    },
                }
            }
        }
    }
    
    #复制数据
    POST /_reindex
    {
      "source": {
        "index": "users"
      }, 
      "dest": {
        "index": "users_temp"
      }
    }
    
    #删除旧索引
    DELETE /users
    
    #创建新索引带映射
    PUT /users
    {
        "mappings": {
    		"user": {
    			"properties": {
    				"age": {
    					"type": "long"
                    },
                }
            }
        }
    }
    
    #复制数据
    POST /_reindex
    {
      "source": {
        "index": "users_temp",
        "query": {
          "match_all": {}
        }
      }, 
      "dest": {
        "index": "users"
      }
    }
    
    #删除临时索引
    DELETE /users_temp
    

    想要了解更多,可以通过 elk相关知识地图 来找到你想要了解的部分进行查看。


    展开全文
  • 刚刚我们在新增数据时,添加的字段都是提前在类型中定义过的,如果我们添加的字段并没有提前定义过,能够成功吗? 事实上Elasticsearch非常智能,你不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来...

    1.背景

    刚刚我们在新增数据时,添加的字段都是提前在类型中定义过的,如果我们添加的字段并没有提前定义过,能够成功吗?

    事实上Elasticsearch非常智能,你不需要给索引库设置任何mapping映射,它也可以根据你输入的数据来判断类型,动态添加数据映射。

    测试一下:

    POST /heima/goods/3
    {
        "title":"超大米手机",
        "images":"http://image.leyou.com/12479122.jpg",
        "price":3299.00,
        "stock": 200,
        "saleable":true,
        "subTitle":"哈哈"
    }
    

    我们额外添加了stock库存,saleable是否上架,subtitle副标题、3个字段。

    来看结果:

    {
      "_index": "heima",
      "_type": "goods",
      "_id": "3",
      "_version": 3,
      "result": "updated",
      "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
      },
      "_seq_no": 3,
      "_primary_term": 1
    }
    

    成功了!在看下索引库的映射关系:

    {
      "heima": {
        "mappings": {
          "goods": {
            "properties": {
              "images": {
                "type": "keyword",
                "index": false
              },
              "price": {
                "type": "float"
              },
              "saleable": {
                "type": "boolean"
              },
              "stock": {
                "type": "long"
              },
              "subTitle": {
                "type": "text",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "ignore_above": 256
                  }
                }
              },
              "title": {
                "type": "text",
                "analyzer": "ik_max_word"
              }
            }
          }
        }
      }
    }
    

    stock、saleable、subtitle都被成功映射了。

    subtitle是String类型数据,ES无法智能判断,它就会存入两个字段。例如:

    • subtitle:text类型
    • subtitle.keyword:keyword类型

    这种智能映射,底层原理是动态模板映射,如果我们想修改这种智能映射的规则,其实只要修改动态模板即可!

    2.动态映射模板

    动态模板的语法:
    在这里插入图片描述

    1)模板名称,随便起

    2)匹配条件,凡是符合条件的未定义字段,都会按照这个mapping中的规则来映射

    3)映射规则,匹配成功后的映射规则

    凡是映射规则中未定义,而符合2中的匹配条件的字段,就会按照3中定义的映射方式来映射

    举例,我们可以把所有未映射的string类型数据自动映射为keyword类型:

    PUT heima3
    {
      "mappings": {
        "goods": {
          "properties": {
            "title": {
              "type": "text",
              "analyzer": "ik_max_word"
            }
          },
          "dynamic_templates": [
            {
              "strings": {
                "match_mapping_type": "string",
                "mapping": {
                  "type": "keyword"
                }
              }
            }
          ]
        }
      }
    }
    

    在这个案例中,我们把做了两个映射配置:

    • title字段:统一映射为text类型,并制定分词器
    • 其它字段:只要是string类型,统一都处理为keyword类型。

    这样,未知的string类型数据就不会被映射为text和keyword并存,而是统一以keyword来处理!

    我们试试看新增一个数据:

    POST /heima3/goods/1
    {
        "title":"超大米手机",
        "images":"http://image.leyou.com/12479122.jpg",
        "price":3299.00
    }
    

    我们只对title做了配置,现在来看看images和price会被映射为什么类型呢:

    GET /heima3/_mapping
    

    结果:

    {
      "heima3": {
        "mappings": {
          "goods": {
            "dynamic_templates": [
              {
                "strings": {
                  "match_mapping_type": "string",
                  "mapping": {
                    "type": "keyword"
                  }
                }
              }
            ],
            "properties": {
              "images": {
                "type": "keyword"
              },
              "price": {
                "type": "float"
              },
              "title": {
                "type": "text",
                "analyzer": "ik_max_word"
              }
            }
          }
        }
      }
    }
    

    可以看到images被映射成了keyword,而非之前的text和keyword并存,说明我们的动态模板生效了!

    展开全文
  • 如果es的默认分词器是standard,那么logstash在导数据的时候,string类型字段会根据logstash模板被自动映射成text类型,同时设置字段分词,这时使用的分词器就是standard,将中文分成单个字,不利于后续的搜索使用
  • Languages: English (this file), Vietnamese, Indonesian, Urdu, Chinese, Brazilian Portuguese, Spanish, Russian, Polish, Korean, French. ...GetX is an extra-light and powerful solution for Flutter...
  • 借助spring实现简单的数据绑定、类型转换、验证、格式化 提供基础的用户、组织机构、职务等管理 提供基于资源的细粒度授权管理,灵活的授权模型 提供常用功能的用例,直接拿来用即可,比如树、可移动列表(即如排序...
  • ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让...
  • ES实时数据搜索和查询 ES仪表盘数据可视化 ES指数管理 管理类型映射 SQL转换为Elasticsearch DSL 设备友好 ElasticHD应用程序页面 认证方式 支持特权认证的ElasticSearch服务器,URL格式: 安装 用于支持的操作...
  • OpenGL ES 3.0

    2018-11-21 09:36:02
     第1章简单介绍OpenGL ES,概述了OpenGL ES 3.0图形管线,讨论了OpenGL ES 3.0的设计理念和限制,最后介绍了OpenGL ES 3.0中使用的一些约定和类型。  第2章——你好,三角形:一个OpenGL ES 3.0示例  第2章介绍...
  • 全新的数据类型、数据结构 set 、Map等 作用域 全局作用域(旧版本) 函数作用域(旧版本) 块级作用域 声明变量 var (旧版本,可实现变量声明的提升,不规范) let let声明的成员,删除变量声明的提升功能,只能...
  • 优化OpenGL ES 应用 (1)

    2021-04-22 09:36:51
    优化应用程序9.1 着色器优化9.1.1 在初始化期间编译和链接9.1.2 使用内置模板9.1.3 使用适当的数据类型9.1.4 减少类型转换9.1.5 封装标量常数9.1.6 保持着色器长度合理9.1.7 有效的纹理采样方式 9. 优化应用程序 ...
  • ES6.2.4 index-template 实践

    千次阅读 2018-06-13 17:58:18
    数据是有mapping的, 而这个mapping可以是dynamic mapping,也可以是事先创建的mapping,如果使用自动mapping的时候可能会出现问题,比如一个doc中有个字段值为2018-06-06 写入ES的时候会被映射成date类型,...
  • 在使用es聚合查询的时候,针对text类型数据,在建立索引之前,一定要使用动态模板, 将text类型变为keyword类型,否则会出现以下错误: ElasticSearch fielddata is disabled on text fields by default. set ...
  • 动态模板 ...动态模板,英文名为Dynamic Templates,是根据Elasticsearch可识别的数据类型,结合字段名称,来动态设定字段类型的一种机制。 自动识别规则 首先es可以自动识别文档字段的类型.
  • 在运行时确定数据类型。变量使用之前不需要类型声明,通常变量的类型是那个被赋值的类型。 弱类: 计算式不同类型之间可以对使用者进行透明的隐氏转换,即便是类型不正确,也能通过隐氏的类型转换得到正确的值。 ...
  • es映射--动态映射

    2020-07-19 23:53:08
    Elastisearch最重要的特征之一就是,它尝试跳出固有的方式,让你尽可能快地开始探索你的数据。为了索引一条文档,你不必先创建一个索引,然后定义字段和映射类型,你可以直接索引一条文档,索引,字段和字段类型会...
  • 基本模板。 目前尚未弹出。 路由 状态管理 类型系统 服务器设置 服务器平台 数据传输 Spotify Web API 类型系统 数据库本地 数据库云 去做 查看辅助功能和改进 移动友好的UI改进 React 16 Profiler考试(性能...
  • 比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping 自定义动态...
  • 比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping 这里有个问题...
  • 我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping dynamic mapping这里有个...
  • 4.2.2 数据类型的基本使用 110 4.2.3 运算符 112 4.2.4 类型转换 114 4.2.5 限定符 115 4.2.6 流程控制 119 4.2.7 函数的声明与使用 121 4.2.8 片元着色器中浮点变量精度的指定 122 4.2.9 ...
  • 高级的用法比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping这里...
  • elasticsearch中给类型增加新字段

    千次阅读 2018-06-21 14:58:07
    在此需明确以下背景ES新添加的字段只对新数据、新type起作用;原有已经索引的数据不会生效;为加快ES的检索和索引效率,构建索引时会指定其mapping结构;添加索引字段即修改mapping;目前我们采用两种索引方案:指定...
  • 背景 基于本公司使用es场景,不...而es string 类型的时候,会自动分词,导致省份、地区等字段都分词了。 具体使用方式 创建 elasticsearc 模板(_template),使用命令: curl -XPUT localhost:9200/_templa...
  • 尚硅谷 ES6-12 笔记

    2021-06-18 01:48:49
    文章目录ES介绍ES6新特性eval函数(ES3函数补充)let关键字const关键字变量解构赋值模板字符串简化对象写法箭头函数函数默认参数REST参数...Spread扩展运算符Symbol 数据类型迭代器生成器PromiseSetMapclass 类数值...
  • 参考:http://kibana.logstash.es/content/elasticsearch/template.html ...Elasticsearch 是一个 schema-less 的系统,但 schema-less 并不代表 no schema,而是 ES 会尽量根据 JSON 源数据的基础类型猜测你想要...
  • ### Dynamic fieid mappings 默认情况下是根据es支持的数据类型类推测参数的类型,而动态模板允许您定义自定义映射规则,根据自定义的规则来推测字段值所属的类型,从而添加字段类型映射。 { "dynamic_templates":...
  • 相信学过后端语言的同学对类并不陌生,类的实质是一种引用数据类型,类似于byte,short,int,long,float,double等基本数据类型,但不同的是它是一种复杂的数据类型。因为它的本质是数据类型,而不是具体的数据...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

es模板数据类型