Elasticsearch Reference【Mapping】

2024-08-27 16:18

本文主要是介绍Elasticsearch Reference【Mapping】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

elasticsearch:5.6

映射(Mapping)

映射是定义什么样的文档、包含什么字段、如何存储和如何索引的过程。
例如,使用映射来定义:

  • 哪些字符串字段应该被看做全文本字段。
  • 哪些字段包含数字、日期和地理位置。
  • 在文档中所有的字段的值是否应该被索引包含到_all字段中。
  • 日期格式的值。
  • 自定义规则来定义动态添加字段的映射。

映射类型(Mapping Types)

个人说明:之前的译文中解释过Mapping Types,这个其实就是elasticsearch中的类型概念。

每个索引都有一个或多个映射类型,用于将索引中的文档分成逻辑组。比如:用户文档可能存储在user类型中,博客类文档存储在博客类型中。

从版本6.0开始,类型(type)这个概念将会被移除掉

一个映射类型有:

元字段(Meta-fields):元字段是用于定义如何处理关联文档的元数据。
例如:元字段包括文档的_index_type_id_source字段。

字段或属性(Fields or properties):
每个映射类型包含类型相关的字段或属性列表。一个user类型可能包含titlenameage字段,而博客类型可能包含titlebodyuser_idcreated字段。在同一个索引中不同的类型的相同字段必须是同一个映射。

字段数据类型(Field datatypes)

每个字段都有一个数据类型,可以是如下:

  • 一个简单的类型像:textkeyworddatelongdoubledoubleboolean或者ip
  • 一个支持json层次的数据类型,如:objectnested
  • 或者 专门的类型像:geo_pointgeo_shape或者completion

为了不同的目的,以不同的方式来索引相同的字段,是非常有用的。
例如,一个string字段可能被索引为一个全文搜索text字段,并且为了排序或者聚合而作为关键字(keyword)字段。另外,你可以使用标准词分析英语词分析法语词分析来索引一个字符串字段。

这就是多字段(multi-fields)的目的。大多数数据类型通过fields参数支持多字段(multi-fields)。

Settings to prevent mappings explosion

(防止映射爆炸的设置)

在索引中定义太多的字段是导致映射爆炸的条件之一,其可能会引起内存错误和难以恢复的情况。这个问题可能比预期更普遍。举个例子,考虑插入每个新文档都有新字段。这在动态索引中是非常普遍的。每次一个文档包含新字段时,这些都将以索引的映射结束。对于少量的数据不用担心,但随着映射的增长,这可能成为一个问题。以下设置允许你限制可以手动或者动态创建的字段映射的数量,为了防止坏文档造成映射爆炸:

index.mapping.total_fields.limit
在索引中字段最大的数量。默认为1000

index.mapping.depth.limit
一个字段最大的深度,这是衡量内部对象的数量。例如,如果所有的字段是在根对象级别定义,其深度就是1。如果是一个对象映射,其深度就是2,等等。默认20

index.mapping.nested_fields.limit
索引中嵌套字段的最大数量,默认是50。索引一个包含100个嵌套字段的文档,实际索引了101个文档,因为每个嵌套文档会作为单独的隐藏文档。

动态映射(Dynamic mapping)

在使用之前,字段和映射类型不需要提前定义的。由于有动态映射,所以只需要索引一个文档,新映射类型和新字段名称将会被自动添加。
新字段可以添加到顶层映射类型、内部对象(object)和嵌套字段(nested)。
可以自定义动态映射的规则来映射新类型和新字段。

显示映射(Explicit mappings)

参考地址:
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/mapping.html#_explicit_mappings

这篇关于Elasticsearch Reference【Mapping】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112167

相关文章

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

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

深入理解PHP7之REFERENCE

REFERENCE 上一章说过引用(REFERENCE)在PHP5的时候是一个标志位, 而在PHP7以后我们把它变成了一种新的类型:IS_REFERNCE. 然而引用是一种很常见的应用, 所以这个变化带来了很多的变化, 也给我们在做PHP7开发的时候, 因为有的时候疏忽忘了处理这个类型, 而带来不少的bug. 最简单的情况, 就是在处理各种类型的时候, 从此以后我们要多考虑这种新的类型, 比如

ElasticSearch的DSL查询⑤(ES数据聚合、DSL语法数据聚合、RestClient数据聚合)

目录 一、数据聚合 1.1 DSL实现聚合 1.1.1 Bucket聚合  1.1.2 带条件聚合 1.1.3 Metric聚合 1.1.4 总结 2.1 RestClient实现聚合 2.1.1 Bucket聚合 2.1.2 带条件聚合 2.2.3 Metric聚合 一、数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如:

【docker】基于docker-compose 安装elasticsearch + kibana + ik分词器(8.10.4版本)

记录下,使用 docker-compose 安装 Elasticsearch 和 Kibana,并配置 IK 分词器,你可以按照以下步骤进行。此过程适用于 Elasticsearch 和 Kibana 8.10.4 版本。 安装 首先,在你的工作目录下创建一个 docker-compose.yml 文件,用于配置 Elasticsearch 和 Kibana 的服务。 version:

ElasticSearch底层原理简析

1.ElasticSearch简述 ElastiaSearch(以下简称ES)是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,支持RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ES设计用于云计算中,能够进行实时搜索,支持PB级搜索,具有稳定,可靠,快速,安装使用方便等

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询数据

ElasticSearch 6.1.1 通过Head插件,新建索引,添加文档,及其查询; 一、首先启动相关服务: 二、新建一个film索引: 三、建立映射: 1、通过Head插件: POST http://192.168.1.111:9200/film/_mapping/dongzuo/ {"properties": {"title": {"type":

ElasticSearch 6.1.1运用代码添加索引及其添加,修改,删除文档

1、新建一个MAVEN项目:ElasticSearchTest 2、修改pom.xml文件内容: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or

Windows下安装Elasticsearch,启动报错,解决方法,访问

对于Windows用户,我们推荐使用MSI安装包进行安装。这个安装包使用图形用户界面来引导你进行安装。 首先,从这里https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.1.msi下载Elasticsearch 6.1.1的MSI安装包。 然后双击下载好的安装包文件启动图形化安装程序,在第一个界面,选

Elasticsearch:无状态世界中的数据安全

作者:来自 Elastic Henning Andersen 在最近的博客文章中,我们宣布了支持 Elastic Cloud Serverless 产品的无状态架构。通过将持久性保证和复制卸载到对象存储(例如 Amazon S3),我们获得了许多优势和简化。 从历史上看,Elasticsearch 依靠本地磁盘持久性来确保数据安全并处理陈旧或孤立的节点。在本博客中,我们将讨论无状态的数据持

ElasticSearch的DSL查询④(DSL查询、RestClient的DSL查询)

目录 一、DSL查询 1.1 快熟入门 1.2 叶子查询 1.2.1 全文检索查询 1)match查询 2)multi_match查询 1.2.2 精确查询 1)term查询 2)range查询 3)ids查询 1.3 复合查询 1.3.1 bool查询 1.3.2 算分函数查询 1)基本语法: 2)运行流程: 3)示例: 4)执行结果: 1.4 排序 1.5