elasticsearch的mapping映射
Mapping简述
Elasticsearch是一个schema-less的系统,但并不代表no shema,而是会尽量根据JSON源数据的基础类型猜测你想要的字段类型映射。
Elasticsearch中Mapping类似于静态语言中的数据类型,但是同语言的数据类型相比,映射还有一些其他的含义。
Elasticsearch会根据JSON源数据的基础类型猜测你想要的字段映射。将输入的数据转变成可搜索的索引项。Mapping就是我们自己定义的字段的数据类型,同时告诉Elasticsearch如何索引数据以及是否可以被搜索。
映射的增删改查
Elasticsearch可以根据数据中的新字段来创建新的映射,当然,在正式数据写入之前我们可以自己定义Mapping,
等数据写入时,会按照定义的Mapping进行映射。如果后续数据有其他字段时,Elasticsearch会自动进行处理。
curl -XPUT 'http://localhost:9200/logstash-2016.01.01/_mapping' -d '
{
"mappings" : {
"syslog" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"message" : {
"type" : "string"
},
"pid" : {
"type" : "long"
}
}
}
}
}
'
在这里需要注意一下,我们已经存在的索引是不可以更改它的映射的,对于存在的索引,只有新字段出现时,Elasticsearch才会自动进行处理。如果确实需要修改映射,那么就使用reindex,采用重新导入数据的方式完成。
ReIndex
Elasticsearch并不提供针对索引的rename,mapping、alter等操作。如果需要更改某个字段的mapping映射,只有一些其他工具。
用Logstash重建索引:
在最新版的logstash中,对logstash-input-elasticsearch插件做了一定的修改,使得通过Logstash完成重建索引称为可能。
Delete
虽然写入数据时Elasticsearch会自动的添加映射进行处理,但是删除数据并不会删除数据的映射
#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01/syslog' 删除了syslog下面的全部数据,但是syslog的映射还在
删除映射的命令:
#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01/_mapping'
删除索引的话映射也会删除
#curl -XDELETE 'http://localhost:9200/logstash-2016.01.01'
查看:
学习索引的话最直接的方式就是查看logstash写入数据到Elasticsearch的时候会根据自带的template生成一个很有学习意义的映射
Elasticsearch数据类型
Elasticsearch自带的数据类型数Lucene索引的依据,也是我们做手动映射调整到依据。
映射中主要就是针对字段设置类型以及类型相关参数。
JSON基础类型如下:
字符串:string
数字:byte、short、integer、long、float、double、
时间:date
布尔值: true、false
数组: array
对象: object
Elasticsearch独有的类型:
多重: multi
经纬度: geo_point
网络地址: ip
堆叠对象: nested object
二进制: binary
附件: attachment
注意点:
Elasticsearch
映射虽然有idnex和type两层关系,但是实际索引时是以index为基础的。如果同一个index下不同type的字段出现mapping不一致的
情况,虽然数据依然可以成功写入并生成并生成各自的mapping,但实际上fielddata中的索引结果却依然是以index内第一个mapping
类型来生成的。
自定义字段映射
Elasticsearch的Mapping提供了对Elasticsearch中索引字段名及其数据类型的定义,还可以对某些字段添加特殊属性:该字段是否分词,是否存储,使用什么样的分词器等。
精确索引:
字段都有几个基本的映射选项,类型(type)和索引方式(index)。以字符串类型为例,index有三个选项:
analyzed:默认选项,以标准的全文索引方式,分析字符串,完成索引。
not_analyzed:精确索引,不对字符串做分析,直接索引字段数据的精确内容。
no:不索引该字段。
对于日志文件来说,很多字段都是不需要再Elasticsearch里做分析这步的,所以,我们可以这样设置:
"myfieldname" : {
"type" : "string",
"index" : "not_analyzed"
}
时间格式:
@timestamp这个时间格式在Nginx中叫$time_iso8601,在
Rsyslog中叫date-rfc3339,在Elasticsearch中叫dateOptionalTime.但事实
上,Elasticsearch完全可以接受其他时间格式作为时间字段的内容。对于Elasticsearch来说,时间字段内容实际上就是转换成
long类型作为内部存储的。所以,接受段的时间格式可以任意设置:
@timestamp: {
"type" : "date",
"index" : "not_analyzed",
"doc_values" : true,
"format" : "dd/MM/YYYY:HH:mm:ss Z"
}
多种索引:
多重索引是Logstash用户习惯的的一个映射,因为这是Logstash默认开启的配置:
"title" : {
"type" : "string",
"fields" : {
"raw" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
其作用时,在title字段数据写入的时候,Elasticsearch会自动生成两个字段,分别是title和title.raw。这 样,有可能同时需要分词和部分次结果的环境,就可以很灵活的使用不同的索引字段了。比如,查看标题中最常用的单词,应该是使用title字段,查看阅读数 最多的文章标题,应该是使用title.raw字段。
多值字段:
空字段:
数组可以使空的。这等于有零个值。事实上,Lucene没法存放null值,所以一个null值的字段呗认为是孔子段。
下面这四个字段将被识别为空字段而不被索引:
"empty_string" : "",
"null_value" : null,
"empty_array" : [],
"array_with_null_value" : [ null ]
elasticsearch的mapping映射的更多相关文章
- elasticsearch中的mapping映射配置与查询典型案例
elasticsearch中的mapping映射配置与查询典型案例 elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题".&q ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- Elasticsearch学习系列之mapping映射
什么是映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确(Exact-value)的字符串值,Elasticsearch需要知道每个字段里面 ...
- Elasticsearch mapping映射文件设置没有生效
Elasticsearch mapping映射文件设置没有生效 问题背景 我们一般会预先创建 Elasticsearch index的 mapping.properties 文件(类似于MySQL中的 ...
- Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射
索引的创建及删除 1. 通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 利用Kibana提供的DevTools来执行命令,要创建一个索引 ...
- ElasticSearch(5)-Mapping
一.Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了 ...
- Logstash中如何处理到ElasticSearch的数据映射
Logstash作为一个数据处理管道,提供了丰富的插件,能够从不同数据源获取用户数据,进行处理后发送给各种各样的后台.这中间,最关键的就是要对数据的类型就行定义或映射. 本文讨论的 ELK 版本为 5 ...
- 通过Java的Domain类构建ElasticSearch的mapping
通过给定一个Java的class类自行创建ElasticSearch的mapping Order的domain类 public class Order { public String system_i ...
- ES mapping映射及优化
mapping映射 主要类型: 同一index下,不同type中如果有相同filed:es进行mapping映射的时候,按照先写进去的指定类型:比如同一index,包含的type中都有key1字段,如 ...
随机推荐
- PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题
团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对 ...
- 命令行 更新Android sdk
使用如下代理服务器: 大连东软信息学院镜像服务器地址: http://mirrors.neusoft.edu.cn 端口:80 北京化工大学镜像服务器地址: IPv4: http://ubuntu.b ...
- [转]使用ant让Android自动打包的build.xml,自动生成签名的apk文件(支持android4.0以上的版本)
在android4.0以后的sdk里那个脚本就失效了,主要是因为 apkbuilder这个程序不见了: 人家sdk升级,我们的脚本也要跟上趟,修改一下喽. 上网一查,大家的文章还停留在我去年的脚本程度 ...
- Part 1: Running Oracle E-Business Suite on Oracle Cloud
You can now run Oracle E-Business Suite on Oracle Cloud. EBS customers can take advantage of rapid ...
- [原]零基础学习视频解码之seek
现在,我们要添加一些功能,当你看不能倒带的电影,是不是很烦? 那么函数av_seek_frame功能看起来是多么赏心悦目. 我们将让左,右箭头来回走在影片中通过一个小的向上和向下箭头很多,其中“三多一 ...
- Android应用中使用及实现系统“分享”接口
为了应用的推广.传播,很多的应用中都有“分享”功能,一个按钮,点击后会出现短信.微博等等一切实现了分享功能的应用列表.这一篇文章主要介绍怎么调用分享功能和怎么实现分享接口让自己应用出现分享列表中.An ...
- 破解android手机图形锁
安卓手机的图形锁包括3*3,4*4,5*5的点阵,按次序连接数个点从而达到锁定/解锁的功能.以3*3为例,最少需要连接4个点,最多能连接9个点.在我们进行绘制图形的过程中,每选中这9个点中的一个点,实 ...
- 导出excel和PDF小结 vba
最近接触了一个关于Access工具的项目,所以整理下需要使用的方法. 功能要求简介: 1.将数据表中的数据导出到excel和PDF 2.并根据某个字段名称分sheet输出. 3.无模板方式 方案简介: ...
- Linux高级编程--06.进程概述
进程控制块 在Linux中,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,它通常包含如下信息: 进程id.系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非 ...
- 关于MySQL的Admin Ping Command
前言: 最近在线上诊断QPS飙升的过程中深入进行了下Admin Ping Command的测试.此外,再一些国外文章中最近也读到了一些相关知识,所以写成一篇博文做一下总结. 1. 关于Admin Pi ...