Elasticsearch(2)——映射关系

news/2024/7/7 5:50:36 标签: elasticsearch

1 什么是映射

映射(mapping)就像数据库中的 Schema ,描述了文档可能具有的字段或属性、每个字段的
数据类型,比如 Text,Keyword,Integer 或 Date ,以及 Lucene 是如何索引和存储这些字
段的。

Elasticsearch 支持如下简单字段类型:
(1) 字符串: text,keyword
(2)整数:byte,short,integer,long
(3)浮点数: float,double
(4) 布尔型: boolean
(5) 日期: date

当你索引一个包含新字段的文档之前【未自动配置映射关系时】,Elasticsearch通过JSON 中基本数据类型,尝试猜测字段类型,自动的加入到映射中。这是Elasticsearch中的动态索引,使用如下规则去映射文档字段。

JSON data typeElasticsearchdata type
null不添加
true 或 falseboolean 类型
带小数的数字,如 1.1float 类型
整数,如 3long 类型
字符串如果配置了自动识别且通过了自动识别 会根据字符串的实际值去动态转换成Elasticsearch的数据类型。如 ‘2023-10-12’ date类型 ‘1.45’ float类型 ‘120’ long 类型 未配置自动识别,使用text 或者keyword类型

对于 JSON 中的字符串字段,我们可以通过配置 date_detection: true 和 numeric_detection:
true 尝试将它们转化成数值类型或时间类型,date_detection 默认为 true,numeric_detecti
on 默认为 false

2 查询映射

准备3条数据
Post http://localhost:9200/users/_create/1
Post http://localhost:9200/users/_create/2
Post http://localhost:9200/users/_create/3
请求的JSON参数如下

{
    "name":"张三",
    "sex":"male",
    "tel":85621
}
{
    "name":"晓明",
    "sex":"male",
    "tel":17885150125
}
{
    "name":"萧红",
    "sex":"female",
    "tel":89457
}

根据上述内容可知,Elasticsearch会在未定义索引的情形去检索JSON的数据类型自动去映射成为Elasticsearch中的数据类型。可以发送Get请求去查询映射关系
h t t p : / / l o c a l h o s t : 9200 / u s e r s / m a p p i n g \textcolor{red}{http://localhost:9200/users/_mapping} http://localhost:9200/users/mapping _mapping 映射操作
在这里插入图片描述

3自定义映射关系

尽管在很多情况下基本字段数据类型已经够用,但你经常需要为单独字段自定义映射,特别是
字符串字段。自定义映射允许你执行下面的操作:
(1) 全文字符串字段和精确值字符串字段的区别
(2) 使用特定语言分析器
(3)优化字段以适应部分匹配
(4) 指定自定义数据格式

可以发送Put请求去自定义设置映射关系 h t t p : / / l o c a l h o s t : 9200 / u s e r 2 / m a p p i n g \textcolor{red}{http://localhost:9200/user2/_mapping} http://localhost:9200/user2/mapping

{
	"properties": {
        //允许的字段 name 
		"name": {
             // 类型为text,可分词查询
			"type": "text",
            //当前字段允许创建索引
			"index": true
		},
		"sex": {
            // 类型为keyword,不可分词查询
			"type": "keyword",
			"index": true
		},
        "tel": {
			"type": "keyword",
            //禁用索引 默认情况下,Elasticsearch 文档每个字段都会被索引。如果某些字段不需要支持查询,可以在映射中配置 "index": false ,减少存储空间占用,并且提升写入速度
			"index": false
		}
	}
}

值得注意的是,已有字段映射已存在的时候,不允许进行修改,比如说从long类型修改成为keyword类型,只能添加新字段
所以自定义创建映射时,选在user2 索引下创建。


http://www.niftyadmin.cn/n/1756040.html

相关文章

2023年网络安全合规状况调查

报告研究发现,虽然绝大多数受访企业组织表示,他们会在网络安全事件发生后采取行动进行响应和补救,但实际上,只有少数组织已经提前制定了支持这一行动的事件响应计划和流程。对大多数企业组织而言,如果提升其网络安全事…

Codeforces Same Parity Summands(构造)

You are given two positive integers n (1≤n≤109) and k (1≤k≤100). Represent the number n as the sum of k positive integers of the same parity (have the same remainder when divided by 22). In other words, find a1,a2,…,ak such that all ai>0, na1a2…a…

为什么对ChatGPT、ChatGLM这样的大语言模型说“你是某某领域专家”,它的回答会有效得多?(二)...

“ 介绍神经网络的基本概念和结构,讨论训练实践、技巧以及网络规模的大小对模型能力的影响。同时介绍嵌入(Embeddings)概念,将高维数据映射到低维空间。通过本文,您将对神经网络有更深入的理解,有助于后面理…

H5使用ThreeJs展示3D模型(gltf格式)案例

一、安装所需js npm install three npm i tweenjs/tween.js^18二、引入和定义全局变量 // 引入three.js import * as THREE from three; // 引入扩展库GLTFLoader.js import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js; import { OrbitControls } from t…

Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置 (解法详解)

34. 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为…

Mysql:创建和管理表(全面详解)

创建和管理表 前言一、基础知识1、一条数据存储的过程2、标识符命名规则3、MySQL中的数据类型 二、创建和管理数据库1、创建数据库2、使用数据库3、修改数据库4、删除数据库 三、创建表1、创建方式12、创建方式23、查看数据表结构 四、修改表1、追加一个列2、修改一个列3、重命…

php导出pdf

插件官网:TCPDF 博主用的是tp6框架 、tcpdf插件 composer require tecnickcom/tcpdf --ignore-platform-reqs 后面是忽略平台要求的参数 ---------------中文乱码start------------------ 关于中文乱码问题: 网上说的下载字体放入fonts 利用tools…

【C#】并行编程实战:使用 PLINQ(1)

PLINQ 是语言集成查询(Language Integrate Query , LINQ)的并行实现(P 表示并行)。本章将介绍其编程的各个方面以及与之相关的一些优缺点。 PLINQ 介绍 | Microsoft Learn了解如何使用 .NET 中的 PLINQ 并行执行查询。 PLINQ 代表…