elasticsearch入门使用(二) Mapping + field type字段类型
Elasticsearch Reference [6.2] » Mapping
参考官方英文文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
部分内容参考:https://www.cnblogs.com/ljhdo/p/4981928.html
Mapping 是定义文档及其包含的字段如何存储和编制索引的过程,每个索引都有一个映射类型,用于确定文档将如何编制索引。
一、Meta-fields
包括文档的_index,_type,_id和_source字段
二、es字段数据类型:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
- 字符串类型
text 、 keyword - 数值类型
long, integer, short, byte, double, float, half_float, scaled_float - 日期类型
date - 布尔值类型
boolean - 二进制类型
binary - 范围类型
integer_range, float_range, long_range, double_range, date_range - Array数据类型(Array不需要定义特殊类型)
[ "one", "two" ]
[ 1, 2 ]
[{ "name": "Mary", "age": 12 },{ "name": "John", "age": 10}]
- Object数据类型 (json嵌套)
{
"region": "US",
"manager": {
"age": 30,
"name": {
"first": "John",
"last": "Smith"
}
}
}
- 地理数据类型
Geo-point,Geo-Shape(比较复杂,参考官网文档,一般用Geo-point就可以了) - 特殊数据类型
ip(IPv4 and IPv6 addresses)
completion(自动完成/搜索)
token_count (数值类型,分析字符串,索引的数量)
murmur3 (索引时计算字段值的散列并将它们存储在索引中的功能。 在高基数和大字符串字段上运行基数聚合时有很大帮助)
join (同一索引的文档中创建父/子关系)
以下是常用的参数类型定义&赋值demo
| 类型 | 参数定义 | 赋值 |
|---|---|---|
| text | "name":{"type":"text"} | "name": "zhangsan" |
| keyword | "tags":{"type":"keyword"} | "tags": "food" |
| date | "date":{"type": "date"} | "date":"2015-01-01T12:10:30" |
| long | "age":{"type":"long"} | "age" :28 |
| double | "score":{"type":"double"} | "score":98.8 |
| boolean | "isgirl": { "type": "boolean" } | "isgirl" :true |
| ip | "ip_addr":{"type":"ip"} | "ip_addr": "192.168.1.1" |
| geo_point | "location": {"type":"geo_point"} | "location":{"lat":40.12,"lon":-71.34} |
三、Mapping parameters
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/mapping-params.html 带*是常用的字段属性
| Parameters | 默认值 | 备注 |
|---|---|---|
| *analyzer | "standard" | standard/simple/stop/keyword/whitespace/(lang:english)字符串分析器,keyword意思是不分词内容整体作为一个token |
| normalizer | - | 统一设置标准化分词,mapping里的字段可以使用同样的分词器 |
| boost | 1.0 | 字段在文档中的权重 |
| coerce | true | 字符串强制转换为数字 |
| copy_to | - | 例如将firstname和lastname复制到fullname |
| doc_values | true | 创建索引的时候存储在磁盘的数据结构,不需要排序和聚合改为false节省磁盘空间 |
| *dynamic | true | ture/false/strict允许动态添加字段,不建议设为true |
| enabled | true | 只存储不索引或聚合,例如session会话存储 |
| fielddata | 字符串专用,查询时将term-document关系存储在内存中 | |
| eager_global_ordinals | 自增唯一编号 | |
| *format | "format": "yyyy-MM-dd hh:mm:ss" | |
| ignore_above | 0 | int,超过这个长度的字符串不会被索引和存储,0代表不限制 |
| ignore_malformed | 设置为true允许错误的数据类型索引到字段中引起的异常 | |
| index_options | positions/docs | docs(只索引文档编号)/freqs(索引文档编号和词频)/positions(索引文档编号/词频/词位置)/offsets(索引文档编号/词频/词偏移量/词位置) ,被索引的字段默认用positions,其他的docs |
| *index | "analyzed" | analyzed/not_analyzed/no 字段值是否被索引,设置no的字段不可查询,参考中文文档 |
| fields | 相同的字段设置不同的方式 | |
| norms | true | score评分相关,会占用一定的磁盘空间,不需要可以关闭 |
| null_value | null | 空值不能被索引和搜索,用字符串"NULL"代替空值 "null_value": "NULL" |
| position_increment_gap | 100 | 当索引多个值的文本时支持临近或短语查询,或值之间的间隙 |
| properties | - | 在创建索引时定义字段的属性 |
| *search_analyzer | 索引的分词器 | 一般索引和搜索用同样的分词器,如需不一样可更改 |
| similarity | "BM25" | BM25/classic/boolean,主要用于文本字段的相似度算法 |
| *store | false | 默认情况字段被索引可以搜索,但没有存储原始值且不能用原始值查询,_resource包含了所有的值,当大段文本需要搜索时可以修改为true |
| term_vector | "no" | no/yes/with_positions/with_offsets/with_positions_offsets 分词向量,分析过程产生的术语 |
elasticsearch入门使用(二) Mapping + field type字段类型的更多相关文章
- Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- ElasticSearch(五):Mapping和常见字段类型
ElasticSearch(五):Mapping和常见字段类型 学习课程链接<Elasticsearch核心技术与实战> 什么是Mapping Mapping类似数据库中的schema的定 ...
- Dynamic Mapping和常见字段类型
原文:Dynamic Mapping和常见字段类型 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...
- ElasticSearch Mapping中的字段类型
1)string: 默认会被分词 2)数字类型主要如下几种: long:64位存储 integer:32位存储 short:16位存储 byte:8位存储 double:64位双精度存储 f ...
- Elasticsearch入门(二)
基础概念 Elasticsearch有几个核心概念,从一开始理解这些概念会对整个学习过程有莫大的帮助. 接近实时(NRT) Elasticsearch是一个接近实时的搜索平台.这意味着,从索引一个文档 ...
- ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套
这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- 初学者都能学会的ElasticSearch入门实战
大家好,我是咔咔 不期速成,日拱一卒 项目中准备使用ElasticSearch,之前只是对ElasticSearch有过简单的了解没有系统的学习,本系列文章将从基础的学习再到深入的使用. 咔咔之前写了 ...
- ArcGIS Field Type /esriFieldTypeDate(转)
ArcGIS Field Type The following table outlines the equivalent field data types in ArcCatalog, ArcO ...
- mysql创建表时字段类型选择与优化
一.选择原则 1.应该尽量使用可以正确存储数据的最小字段类型 2.选用简单的数据类型,例如:一个是尽量用mysql内置的字段类型来存储日期和时间:另一个存储IP地址尽量用整型:能用整型的尽量不用字符串 ...
随机推荐
- java在线聊天项目 swt可视化窗口Design 重新设计聊天窗口
设计的聊天窗口如下: 制作过程: 首先,在默认的BorderLayout视图下, 上边也就是North处添加一个JPanel,将Layout调整为BorderLayout,West放一个JLabel用 ...
- ios 团购信息客户端demo(三)
接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接 ...
- ajax通信
AJAX即Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),可以在不重新加载整个网页的基础上,对网页的某部分进行更新. XMLHttpRequ ...
- layer的iframe层的传参和回参
从父窗口传参给iframe,参考://https://yq.aliyun.com/ziliao/133150 从iframe回参给父窗口,参考:https://www.cnblogs.com/jiqi ...
- mysql存储过程详解及基于PHP使用实例
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- Python模块(一)(常用模块)
1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random() ...
- Python三元表达式和列表生成式
三元表达式 取代 if …… else……的简单表达方式 # 常规写法 x = 1 y = 2 if x>y: print(x) else: print(y) #三元表达式写法 res ...
- LeetCode(91) Decode Ways
题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...
- Luogu 5017 NOIP2018普及组T3 摆渡车 (斜率优化 + 必要的转移进行剪枝)
题意: 有 n 名同学要乘坐摆渡车从人大附中前往人民大学,第 i 位同学在第 ti 分钟去 等车.只有一辆摆渡车在工作,但摆渡车容量可以视为无限大.摆渡车从人大附中出发. 把车上的同学送到人民大学. ...
- python基础——13(系统、时间、序列化模块)
一.时间模块 1.标准库time %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月中的一天(0-31) %H 24小时制小时数(0 ...