elasticsearch数据组织结构

1.      mapping

1.1.    简介

mapping:意为映射关系,特别是指组织结构。在此语境中可理解为数据结构,包括表结构,表约束,数据类型等。(非母语环境伤不起。。。晦涩无比,半小时才转过圈来)

1.2.    mapping type

每个索引都有一个映射类型,它决定文档索引的方式。

映射类型分为两种:

  1. 元字段:_index,_type,_id,_source
  2. 值字段或属性:

值字段数据类型—相当于mysql的数据类型

有text,keywork,date,boolean,object,nested,geo_point等

具体见其它文档。

1.3.    映射约束

在一个索引中定义太多的字段可能会导致内存溢出,它并不像想象的那么少见。

有一些设置用来约束

index.mapping.total_fields.limit

索引字段数量,计数包括字段,对象映射,字段别名。默认值1000

index.mapping.depth.limit

字段最大深度,指对象引用的深度。默认为20.

index.mapping.nested_fields.limit

The maximum number of distinct nested mappings in an index, defaults to 50.

非重复的嵌套映射数量,默认50

index.mapping.nested_objects.limit

单一文档嵌套json对象的最大值,默认10000

index.mapping.field_name_length.limit

字段名的长度限制,默认无限制。

1.4.    动态映射

字段和映射类型无需提前定义。添加时会自动创建。

在顶层映射、内部对象及nested字段上都会如此。

1.5.    显示映射explicit mapping

设置命令语法:

PUT /<index>/_mapping

创建index并指定映射

curl -X PUT "localhost:9200/my-index?pretty" -H 'Content-Type: application/json' -d'

{

"mappings": {

"properties": {

"age":    { "type": "integer" },

"email":  { "type": "keyword"  },

"name":   { "type": "text"  }

}

}

}

'

为一个映射添加字段

案例:

curl -X PUT "localhost:9200/my-index/_mapping?pretty" -H 'Content-Type: application/json' -d'

{

"properties": {

"employee-id": { # 字段名

"type": "keyword", # 字段类型

"index": false # 代表此字段不参与index

}

}

}

注意:

已存在的映射是不能修改的,下述项例外:

  1. 为object字段添加属性
  2. ignore_above的值是可以改的。

修改已存在的映射会使已有索引数据失效。如果想修改映组织关系,创建新的index并reindex数据。如果只是想修改字段名,建议添加别名字段。

1.6.    相关命令

查看索引的映射

GET /my-index/_mapping

rv = es.indices.get_mapping(index_name)

1.7.    注意事项

_doc问题

7.X及以后版本并没有type参数,但在7.x中部分命令的type位置需要写成_doc。

2.      field datatypes

Elasticsearch supports a number of different datatypes for the fields in a document:

-----Core datatypes

2.1.    string

text and keyword

2.1.1.   text

它会被解析为individual terms before being indexed.

2.1.2.   keyword

用于索引结构化内容的字段,例如email addresses, hostnames, status code.

案例

PUT my_index

{

"mappings": {

"properties": {

"tags": {

"type":  "keyword"

}

}

}

}

2.2.    Numeric

long, integer, short, byte, double, float, half_float, scaled_float

2.3.    Date

date

2.4.    Date nanoseconds

date_nanos

2.5.    Boolean

boolean

2.6.    Binary

binary

2.7.    Range

integer_range, float_range, long_range, double_range, date_range

------Complex datatypes

2.8.    Object

object for single JSON objects

2.9.    Nested

nested for arrays of JSON objects

3.      meta-field元字段

每个文档都有自己的元字段。

3.1.    identity meta-fields

_index

_type

_id

3.2.    document source meta-fields

_source:源JSON数据

_size:_source的大小,单位bytes,provided by the mapper-size plugin.

3.3.    indexing meta-fields

_fields_names

_igonred

3.4.    routing meta-field

_routing

3.5.    other meta-field

_meta

4.      analyzer

document: https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer.html

下面是一个设置索引分词器参数及应用的案例:

PUT my_index

{

"settings":{

"analysis":{

"analyzer":{

"my_analyzer":{

"type":"custom",

"tokenizer":"standard",

"filter":[

"lowercase"

]

},

"my_stop_analyzer":{

"type":"custom",

"tokenizer":"standard",

"filter":[

"lowercase",

"english_stop"

]

}

},

"filter":{

"english_stop":{

"type":"stop",

"stopwords":"_english_"

}

}

}

},

"mappings":{

"properties":{

"title": {

"type":"text",

"analyzer":"my_analyzer",

"search_analyzer":"my_stop_analyzer",

"search_quote_analyzer":"my_analyzer"

}

}

}

}

PUT my_index/_doc/1

{

"title":"The Quick Brown Fox"

}

PUT my_index/_doc/2

{

"title":"A Quick Brown Fox"

}

GET my_index/_search

{

"query":{

"query_string":{

"query":"\"the quick brown fox\""

}

}

}

elasticsearch数据组织结构的更多相关文章

  1. 【原创】大叔经验分享(26)hive通过外部表读写elasticsearch数据

    hive通过外部表读写elasticsearch数据,和读写hbase数据差不多,差别是需要下载elasticsearch-hadoop-hive-6.6.2.jar,然后使用其中的EsStorage ...

  2. Oracle和Elasticsearch数据同步

    Python编写Oracle和Elasticsearch数据同步脚本 标签: elasticsearchoraclecx_Oraclepython数据同步    Python知识库 一.版本 Pyth ...

  3. elasticsearch数据备份还原

    elasticsearch数据备份还原 1.在浏览器中运行http://XXX.XXX.XXX.XXX:9200/_flush,确保索引数据能保存到硬盘中. 2.原数据的备份.主要是elasticse ...

  4. 18-10-15 服务器删除数据的方法【Elasticsearch 数据删除 (delete_by_query 插件安装使用)】方法二没有成功

    rpa 都是5.xx  ueba 分为2.0 或者5.0 上海吴工删除数据的方法 在许多项目中,用户提供的数据存储盘大小有限,在运行一段时间后,大小不够就需要删除历史的 Elasticsearch 数 ...

  5. [转] [Elasticsearch] 数据建模 - 处理关联关系(1)

    [Elasticsearch] 数据建模 - 处理关联关系(1) 标签: 建模elasticsearch搜索搜索引擎 2015-08-16 23:55 6958人阅读 评论(0) 收藏 举报 分类: ...

  6. 服务追踪数据使用 RabbitMQ 进行采集 + 数据存储使用 Elasticsearch + 数据展示使用 Kibana

    服务追踪数据使用 RabbitMQ 进行采集 + 数据存储使用 Elasticsearch + 数据展示使用 Kibana https://www.cnblogs.com/xishuai/p/elk- ...

  7. 【原创】MapReduce备份Elasticsearch数据到HDFS(JAVA)

    一.环境:JAVA8,Elasticsearch-5.6.2,Hadoop-2.8.1二.实现功能:mapreduce读elasticsearch数据.输出parquet文件.多输出路径三.主要依赖 ...

  8. 大数据学习[16]--使用scroll实现Elasticsearch数据遍历和深度分页[转]

    题目:使用scroll实现Elasticsearch数据遍历和深度分页 作者:星爷 出处: http://lxWei.github.io/posts/%E4%BD%BF%E7%94%A8scroll% ...

  9. 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原

    一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...

随机推荐

  1. Java常量,变量,对象(字面量)在JVM内存中的存储位置

    Java常量,变量,对象(字面量)在JVM内存中的存储位置 2019-02-26 18:13:09 HD243608836 阅读数 540  收藏 更多 分类专栏: JAVA jvm   苦苦研究了快 ...

  2. Excel 不同文件、sheet 关联引用(vlookup函数)

    有时候在excel办公中会遇到,两个sheet相同的一列数据,作为关联(就像数据库的表的外键),其中一个sheet想要获取另一个sheet的其他列数据,这样就用到了vlookup函数,下面演示一下: ...

  3. WPF学习笔记一之布局

    1.Canvas 布局控件Canvas主要用来画图,注意Canvas.Left/Right/Top/Bottom <Canvas Margin="10,10,10,10" B ...

  4. Chrome浏览器添加信任站点

    转载来源:https://zhidao.baidu.com/question/1946829886340846268.html 在浏览器地址栏输入:chrome://net-internals/#hs ...

  5. Python - 将iterable拆分成等长的数据块

    说明 看文档发现一个有趣的应用(利用zip函数) 例如[1, 2, 3, 4] --> [(1, 2), (3, 4)],拆分成长度为2的数据块 Code >>> a = [1 ...

  6. 旋转坐标+前缀和(zqu 25001)

    本题题意:在一个矩阵中,去随机一点,设定一个步数K,求出从这个点可以走到的范围的和,求最大值 思路:这个范围的和是一个菱形,我们把他旋转45°,然后成为一个正放的矩阵,求出二维前缀和 然后用前缀和的性 ...

  7. [Excel] 一些实用的函数式子

    这次是用php写了一个系统 收集信息,需要身份证号作为验证,但是为了信息安全 只能在数据库里面放身份证后六位.也就是说.最终导出的Excel也是只有身份证的后六位.,, 后来我发现我本地保存的完整身份 ...

  8. 【原】Harbor安装及使用

    一.Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级私有Registry服务器. 二.Harbor安装 1.下载Harbor包 官网地址:https://github.com ...

  9. URLEncode和URLDecode

    URLEncode.encode(String s,String utf-8) 编码 URLDEcode.decode(String %2b%,String utf-8) 解码 用法: String ...

  10. 【音乐欣赏】《Forget》 - The Tech Thieves

    曲名:Forget 作者:The Tech Thieves [00:00.000] 作曲 : Mark Emmanuel/Alia May Plesa-Topham [00:01.000] 作词 : ...