Elasticsearch--字段数据类型

hive映射elasticsearch nested复杂数据类型,读取elasticsearch _id字段 先简单写一下,列出关键的部分,es的nested数据结构如何在hive中做映射,es-hadoop的jar包当然要包括在hive的classpath中,就不多说。 这是es的索引结构,略去了不必要的内容 { "mappings": { "doc": { "properties": { "MotorVehicleID": { "type": "keyword" }, "InfoKind": { "t... 阅读详情

字段数据类型

Elasticsearch支持一系列不同的数据类型来定义文档字段,分为核心数据、复杂数据、地理数据、专门数据类型。

核心数据:

  • 字符串数据类型:string
  • 数字型数据类型:long、integer、short、byte、double、float
  • 日期型数据类型:date
  • 布尔型数据类型:boolean
  • 二进制数据类型:binary

复杂数据类型:

  • 数组数据类型:不需要专门的类型来定义数组
  • 对象数据类型:object,单独的JSON对象
  • 嵌套数据类型:nested,关于JSON对象的数据

地理数据类型:

  • 地理点数据类型:geo_point,经纬点
  • 地理形状数据类型:geo_shape,多边形的复杂地理形状

专门数据类型

  • IPv4数据类型:IP协议为IPv4的地址
  • 完成数据类型:completion,提供自动补全的建议
  • 单词计数数据类型:token_count,统计字符串中的单词数量

核心数据类型

1. 字符串数据类型

字符串数据类型的字段接受文本值,可以分为如下两种:

  • 全文本:全文本值通常用于基于文本的相关性搜索,全文本字段可以分词,即在索引执行之前通过一个分词器将字符串转换为单词列表。分词操作使得Elasticsearch可以在全文本字段上搜索单词。全文本字段不用玉排序而且很少用于聚合。
  • 关键字:关键字是个精准值,通常用于过滤、排序、参与聚合。关键字字段不参与分词。

示例:全文本(可以分词)字段和关键字(不可以分词)字段

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "full_name":{"type": "text"},
        "status":{"type": "text", "index": false}
      }
    }
  }
}

其中full_name字段是一个可分词的全文本类型字段——index;默认是analyzed。status字段是一个不可分词的关键字段。

同一个字段同时拥有全文本和关键字两个版本非常游泳:一个用于全文搜索,另一个用于聚合和排序。

字符串数据类型的字段可以接受的参数如下表:
在这里插入图片描述
在这里插入图片描述

2. 数字型数据类型

在这里插入图片描述

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "number_of_bytes": {"type": "integer"},
        "time_in_seconds":{"type": "float"}
      }
    }
  }
}

数字型字段参数:
在这里插入图片描述

3. 日期型数据类型

JSON没有日期型数据类型,所以在Elasticsearch中,日期可以是:

  • 包含格式化日期的字符串,例如『2015-01-01』或者『2015/01/01 12:10:30』
  • 代表时间毫秒数的长整型数字
  • 代表时间秒数的整数

通常,日期被转换为UTC(如果时区被指定)但是存储为代表时间毫秒数的长整型数。可以自定义时间格式,如果没有指定格式,则使用默认值:
strict_date_optional_time||epoch_millis这意味着接受任何时间戳的日期值。

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "date":{"type": "date"}
      }
    }
  }
}

PUT /myindex2/test2/1
{
  "date":"2015-01-01"
}

PUT /myindex2/test2/2
{
  "date":"2015-01-01T12:10:30Z"
}

PUT /myindex2/test2/3
{
  "date":"1420070400001"
}

日期字段参数:
在这里插入图片描述

4. 布尔数据类型

布尔字段接受true或false值,也可以接受代表真或假的字符串和数字:

  • 假值:false,"false","off","no","0",""(空串),0,0.0
  • 真值:其它任何非假值
PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "is_published":{"type": "boolean"
        }
      }
    }
  }
}
PUT /myindex2/test2/1
{
  "is_published": true
}

布尔类型字段参数:
在这里插入图片描述

5. 二进制数据类型

二进制数据类型接受Base64编码字符串的二进制值。字段不以默认方式存储而且不能搜索:

PUT /myindex2
{
  "mappings": {
    "test2": {
      "properties": {
        "name":{"type": "text"},
        "blob":{"type": "binary"}
      }
    }
  }
}
PUT /myindex2/test2/1
{
  "name":"Some binary blob",
  "blob": "U29tZSBiaW5hcnkgYmxvYg=="
}

Base64编码二进制值不能嵌入换行符\n。二进制数据类型的字段参数如下:

  • doc_values——定义字段是否应该以列跨宽度存储在磁盘上,以便与排序、聚合或者脚本。接受true(默认)或false参数。
  • dtore——决定字段值是否应该存储以及从_source字段分别获取。接受参数true或false(默认)。

复杂数据类型

1. 数组数据类型

在Elasticsearch中,没有专门的数组类型。每个字段默认可以包含零个或多个值,然而,数组中的所有值都必须是相同的数据类型。

注意:无法对数组中的每一个对象进行单独的查询。

  • 当动态添加字段的时候,数组中第一个元素的值决定了字段类型
  • 数组可能包含null值,会被null_value配置替换掉或者忽略掉
  • 一个空数组[]被当做缺失字段——没有值的字段
2. 对象数据类型

JSON文档是天然分层的:文档可以包含内部对象。同样,内部对象也可以包含内部对象。

对象数据类型的参数如下所示:

  • dynamic:定义新的参数是否应该动态假如到已经存在的对象中。接受true(默认),false和strict。
  • enabled:复制给对象字段的JSON值应该被解析和索引(true,默认)还是完全忽略(false)
  • include_in_all:为对象内的所有属性设置include_in_all值。对象本身不添加到_all字段。
  • properties:对象内的字段可以是任意类型,包括对象数据类型。新的属性可以添加到已存在的对象中。
3. 嵌套数据类型

嵌套数据类型是对象数据类型一个专门的版本,用来使一组对象被单独地索引和查询。

(1)对象数组是如何摊平的

Lucene没有内部对象的概念,所以Elasticsearch利用简单的列表存储字段名和值,将对象层次摊平。

PUT /myindex2/test2/1
{
  "group":"fans",
  "user":[
    {"first":"John","last":"Smith"},
    {"first":"Alice","last":"White"}
  ]
}
//转换为内部文档,结构如下
{
	"group":"fans",
	"user.first":["alice", "john"],
	"user.last":["smith", "white"]
}

user.first和user.last字段存在多值字段中,alice和white的关联性丢失了。这个文档可能错误匹配到关于alice和smith的查询。

(2)对一组对象使用嵌套字段
如果需要对一组对象进行索引而且保留数组中每个对象的独立性,可以使用嵌套数据类型而不是对象数据类型。本质上,嵌套对象将数组中的每个对象作为分离出来的隐藏文档进行索引。这也意味着每个嵌套对象可以独立于其它对象被查询:

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "user":{"type": "nested"}
      }
    }
  }
}

PUT /myindex2/test2/1
{
  "group":"fans",
  "user":[
    {"first":"John","last":"Smith"},
    {"first":"Alice","last":"White"}
  ]
}

可以根据对象进行搜索,但对象的条件要全匹配才能搜到:

POST /myindex2/_search
{
  "query": {
    "nested": {
      "path": "user",
      "query": {
        "bool": {
          "must": [
            {"match":{"user.first":"Alice" }},
            {"match":{"user.last":"White" }}
          ]
        }
      }
    }
  }
}

嵌套数据类型的字段参数如下:

  • dynamic:定义新的参数是否应该动态加入到已经存在的对象中。接受true(默认),false和strict。
  • include_in_all:为对象内的所有属性设置include_in_all值。嵌套文档没有它们自身的_all字段,取而代之的是,值被添加到"跟"文档的_all字段中。
  • properties:对象内的字段可以是任意类型,包括对象数据类型。新的属性可以添加到已存在的嵌套对象中。

地理数据类型

1. 地理点数据类型

地理点数据类型字段接受经纬度,可用于:

  • 查找一定范围内的的地理点,这个范围可以是相对于一个中心点的固定距离,也可以是多边形或者地理散列单元。
  • 通过地理位置或者相对于中心点的距离聚合文档。
  • 整合距离到文档的相关性评分中。
  • 通过距离对文档进行排序。

示例:指定类型为地理位置数据类型

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "location":{"type": "geo_point"}
      }
    }
  }
}

存储地理位置数据有4种不同方式:

//地理点参数形如对象参数,拥有纬度和经度键值对
PUT /myindex2/test2/1
{
  "text":"Geo-point as an object",
  "location":{"lat":41.12,"lon":-71.34}
}

//字符串地理点参数的格式为"纬度,经度"
PUT /myindex2/test2/2
{
  "text":"Geo-point as a string",
  "location": "41.12,-71.34"
}

//散列地理点参数
PUT /myindex2/test2/3
{
  "text":"Geo-point as a geohash",
  "location": "drm3btev3e86"
}

//地理点数组参数,格式为 [经度,纬度]
PUT /myindex2/test2/4
{
  "text":"Geo-point as a array",
  "location": [-71.34,41.12]
}

地理点字段参数:
在这里插入图片描述

2. 地理形状数据类型

不常用,不做介绍…

专门数据类型

1. IPv4数据类型

IPv4字段本质上是一个长整型字段,接受IPv4地址并作为长整型进行索引。

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "ip_addr":{"type": "ip"}
      }
    }
  }
}

PUT /myindex2/test2/1
{
  "ip_addr":"192.168.1.1"
}

IP字段参数:
在这里插入图片描述

2. 单词计数数据类型

单词计数型字段本质上是一个整数型字段,接受并分析字符串值,然后索引字符串中单词的个数。

PUT /myindex2
{
  "mappings": {
    "test2":{
      "properties": {
        "name":{
          "type": "text",
          "fields": {
            "length":{"type":"token_count","analyzer":"standard"}
          }  
        }
      }
    }
  }
}

PUT /myindex2/test2/1
{
  "name": "John Smith"
}

严格来说,单词计数类型计算位置增量而不是统计单词。这意味着即使分析器过滤掉一部分单词,它们也会被包含在计数中。

单词计数型字段参数:
在这里插入图片描述

Elasticsearch 字段映射与数据类型 在 Elasticsearch 中,@Field注解的type属性用于指定字段的数据类型。不同的字段类型会影响 Elasticsearch 对数据的存储方式、索引方式以及查询方式。以下是@Field中常见的字段类型(FieldType)及其详解。用途用于存储需要特定分词器处理的文本字段。当你需要自定义分词行为时,可以使用自定义的分词器。这时,你不仅可以指定一个特定的分词器,还可以配置分词器的具体行为,或者使用多个分析器链组合起来来达到更好的文本处理效果。特点。 阅读详情

相关推荐

Elasticsearch的数据类型

Elasticsearch的数据类型

JustinMars的博客 1805

ElasticSearch 常用字段类型

一、数据类型 1.1 核心数据类型 字符串型: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 1.2 复杂数据类型 数组类型:array 对象类型:object

wr_java的博客 5159

DDPG算法实战:用Python一步步实现深度强化学习中的连续动作控制

本文详细介绍了DDPG算法在深度强化学习中的连续动作控制应用,通过Python和PyTorch实现从零构建智能体。内容涵盖环境搭建、网络架构设计、经验回放、OU噪声实现及训练流程优化,帮助开发者掌握DDPG在机械臂控制等场景的核心技术。

weixin_30335575的博客 416

Elasticsearch字段数据类型

ES文档的每个字段都至少有一个数据类型,此类型决定了字段值如何被存储以及检索。例如,字符串类型可以定义为text或者keyword,前者用于全文检索,会经过分词后索引;后者用于精准匹配,值会保持原样被索引。ES字段类型按族分组,同一族中的类型具有完全相同的搜索行为,但可能具有不同的空间使用或性能特征。

程序员小潘 3522

【探秘】二维异形件重叠移除算法:从度量到消除的实战解析

本文深入解析二维异形件重叠移除算法的核心技术与实战应用,涵盖重叠度量、零件扰动策略及消除方法。通过NFP(临界多边形)技术、空间分区加速等优化手段,有效解决异形件排版中的重叠问题,提升材料利用率和计算效率。适合制造业、CAD软件开发者及算法工程师参考。

weixin_28698059的博客 253

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 596

7.elasticsearch字段类型列表

1.本文总结自2.本文罗列了 elasticsearch常用的字段类型;

PacosonSWJTU的博客 5292

基本模型 PINNs : Physics Informed Neural Networks

系列最开始当然要提到很经典的文章 —— Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 。 这篇文章是布朗大学的助理教授Maziar Rais...

waitingwinter的博客 3万+

ElasticSearch 实战:字段类型

类型的字段会被分词(tokenized)并建立倒排索引,支持模糊搜索、短语搜索、同义词搜索等复杂查询。在实际使用中,根据业务数据的性质选择合适的字段类型,并结合多字段、分析器等特性进行定制化设置,可以显著提升Elasticsearch的搜索性能和查询准确性。通过合理设置字段类型,您可以在Elasticsearch中高效地存储、查询和分析各种类型的数据。用于存储数组形式的独立对象,每个对象都有自己的文档结构,可以独立查询和聚合。用于存储不可分词的、完整的、原始的值,如标签、ID、电子邮件地址等。

qq_33240556的博客 1125

疾风气象大模型4.0白皮书

《疾风气象大模型白皮书摘要》 疾风气象大模型(J-AFM)是国内首个基于3D建模的气象智能平台,突破传统二维气象分析的局限,采用体素化技术构建"x-y-z-t"四维统一模型,实现从分钟级短临到30天跨时效的连续预测。核心技术包括:1)多源数据三维同化,融合雷达、卫星、风廓线等异构数据;2)物理约束AI解码器,嵌入能量守恒、湍流封闭等气象原理;3)行业适配插件,服务风电、光伏、航空等领域,如山地风场尾流校正、云影短临预测。平台支持批流一体推理与边缘部署,提供概率化输出和误差溯源能力,显著降

专注AI大模型,软件混淆,授权 544

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题

方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡!

江拥羡橙的博客 810

Elasticsearch (ES) 搜索引擎: 数据类型、动态映射、多类型(子字段)

ES 映射字段的 数据类型。keyword 类型是不可切分的字符串类型,需要全匹配,用于字符串是否相等的比较。keyword 类型一般用于文档的过滤、排序和聚合。在实际场景用,keyword 一般用于描述 用户名、类型、用户ID、URL 等。text 类型是可进行分词分隔的字符串类型,支持部分匹配、模糊匹配。由于 text 是模糊匹配,所有支持匹配度打分。text 类型一般用于描述文章标题、文章内容等。数值类型支持 相等、范围(大小)比较,也可用于对文档的过滤、排序和聚合。

谢TS的博客 2792

AI智能体面试实战与真题解析: 312+道面试题完整答案 (下篇)

本文覆盖220道基础八股文+92道项目面试题,涵盖Agent架构、RAG、工具调用、记忆系统、多智能体、大模型基础、工程化实践、Prompt工程9大模块,含完整代码实现和模拟面试剧本。

program哲学 302

ES修改字段的数据类型

查看mapping或者在选择字段的时候可以看到字段keyword的数据类型是。无法使用sort进行排序,现需要改成。因此,做以下修改就可以查出来了。将旧索引的数据导入新索引。查询可以看到数据导入成功。

laozaoxiaowanzi的博客 2944

第八章 Vite4+Vue3+Vtkjs 完整demo演示

vtk.js是一个基于WebGL的开源3D可视化库,它可以在Web浏览器中呈现高质量的3D图形。vtk.js提供了一个易于使用的API,可以用于创建各种类型的3D可视化,包括科学、医学、工程和地球科学等领域。vtk.js支持多种数据格式,包括VTK、DICOM、STL等,可以轻松地将数据导入到可视化中。此外,vtk.js还支持交互式可视化,用户可以通过鼠标和键盘进行交互,探索和分析数据。采用的vite4+pinia搭建的Vue3项目。

Wait.End的博客 2234

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ElasticSearch系列 - SpringBoot整合ES:映射中定义字段的数据类型及属性

在Elasticsearch中,搜索结果的准确性和召回率是非常重要的指标,它们反映了搜索引擎的性能和效果。以下是这两个指标的定义和解释:准确性:搜索结果的准确性是指搜索引擎返回的结果中有多少是与查询字符串相关的。如果搜索结果中包含大量与查询字符串无关的文档,那么搜索引擎的准确性就会降低。召回率:搜索结果的召回率是指搜索引擎返回的结果中有多少是与查询字符串相关的文档的比例。如果搜索引擎无法找到与查询字符串相关的文档,那么搜索引擎的召回率就会降低。在Elasticsearch中,每个字段都有一个数据类型,用于指

你今天真好看呀 3638

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

elasticsearch 更改已有字段的数据类型

elasticsearch 更改已有字段的数据类型 【问题背景】: 在elasticsearch中,如果你没有指定字段映射,那么,elasticsearch将对为指定数据类型的字段做动态映射。 例如,当入库的前期数据字段result为数值型时,elasticsearch将其映射为long类型;当入库的后期数据字段result为字符串时,会报数据类型错误。 更改索引blog中的动态映射字段pri...

皓阳当空-博客 4万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

修改elasticsearch字段数据类型

以下操作基于elasticsearch版本:5.4 (elasticsearch最新版本7.x不适合) 说明:所有操作都在elasticsearch插件中进行。如果你没有插件,理会其精神,也是可以使用命令行操作的。 首先需明确一点: elasticsearch中字段的数据类型无法做更新处理,这不像mysql中字段数据类型可以更新。 因此修改字段数据类型的思路是: 1、先新建...

Nut___的博客 2998

Elasticsearch7.X 字段数据类型

【主要数据类型】 (1)字符串类型: text, keyword (2)数字类型:long, integer, short, byte, double, float, half_float, scaled_float (3)日期:date (4)日期 纳秒:date_nanos (5)布尔型:boolean (6)Binary:binary (7)Range: integer_range, float_range, long_range, double_range, date_range 【复杂数据类型】

心有猛虎细嗅蔷薇 1421

ES字段数据类型

字段数据类型 每个字段都有一个字段数据类型或字段类型。此类型指示字段包含的数据类型(例如字符串或布尔值)及其预期用途。例如,您可以将字符串索引到text和keyword字段。但是,text将对字段值进行分析以进行全文本搜索,而keyword字符串按原样保留以进行过滤和排序。 字段类型按族分组。同一族中的类型支持相同的搜索功能,但可能具有不同的空间使用或性能特征。 目前,唯一类型的族keyword,它由以下部分组成keyword,constant_keyword和wildcard字段类型...

zhoudatianchai的专栏 2281

Elasticsearch7.*字段数据类型

1、主要数据类型 string类型:text,keyword(默认不会被分词),wildcard 数字类型:long,integer,short,byte,double,float,half_float,scaled_float 日期类型:date 布尔类型:boolean Binary:Binary 范围类型:integer_range,float_range,long_range,double_range,date_range,ip_range 2、复杂数据类型 O...

孟林洁的博客 3469

Elasticsearch中的字段数据类型

Elasticsearch中的字段数据类型如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 字段数据类型(Field data type,field type):也称为之为字段类型,每个字段都有一个字段数据类型。字段数据类型用来标识字段所含数据的类型,比如字符串、bool值等。我们可以将字符串映射成tex

wjzt7322的博客 602

Elasticsearch字段数据类型全面解析:从基础到高级应用

在Elasticsearch中,字段数据类型的选择直接影响搜索性能、存储效率和查询准确性。错误的数据类型选择可能导致: - 搜索性能下降 - 存储空间浪费 - 查询结果不准确 - 聚合分析困难 本文将深入解析Elasticsearch的所有字段数据类型,帮助您做出最佳选择。 ## 数据类型分类总览 Elasticsearch的数据类型可以分为以下几大类: ```mermaid mindm...

gitblog_01114的博客 379

ES修改字段数据类型

ES修改字段数据类型 reindex的方式 步骤为: 首先使用get的方式获取原始的索引的mapping 和setting 新建一个index,修改获取的原始mapping的字段类型 put index_name { "mapping":{}, "setting":{} } reindex将原始索引的数据写到新建的索引里面去 post _reindex { "source": { "index": "old_index" }, "dest": { "index"

龙共三金的专栏 3239

【Lucene/Elasticsearch】 数据类型(ES 字段类型) | 底层索引结构

`text`、`keyword`(字符串) | **倒排索引 + 正排 doc values** | 分词或不分词的倒排列表 || `completion`、`search_as_you_type` | **专用 FST** | 用于前缀/补全,不走倒排 || `object`、`nested`、`flattened` | **子字段递归索引** | 内部仍是倒排/BKD 组合 |• 先根据用户输入的前缀或模糊模式,在 **FST** 里快速定位到 **所有候选 term** 的起止位置。

risc123456的博客 455
上一篇: Elasticsearch--映射类型
下一篇: Elasticsearch--映射参数(一)
吴声子夜歌
博客等级 码龄9年 2688粉丝 2270原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值