elasticsearch复合类型——数组类型新建,插入,查询

2023-11-07

多值字段,在一般开发情况下,我们想让某个字段包含多个字段,我们可以通过一个标签数组来代替单一字符串,
{“tags”:[“boy”, “monitor”]};
对于数组不需要特殊的映射,任何一个字段可以包括零个、一个或者多个值,对于全文字段而言将被解析成多个词。数组里面的值的类型必须是同样的,es将使用数组的第一个词类型来确定这个字段的类型

下面贴上es的字段类型图和数组类型的使用实例。
在这里插入图片描述

首先 我们创建一个带有数组类型的mapping。

curl -H "Content-Type: application/json" -XPUT 'http://xxxxxxxx:9200/school/' -d '
{
    "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
    }, 

"mappings": {
    "student": {
            "properties": {
"name": {
"index": "true",
"type": "keyword"
},
"age": {
"type": "integer"
},
"tags": {
"index": "true",
"type": "keyword"
}	
}
}
}
}'

然后我们新建几个测试的文档:

PUT /school/student/1/_create 
{
  "name": "李小二",
  "age": 17,
  "tags": [
    "father",
    "player"
  ]
}


PUT /school/student/2/_create 
{
  "name": "张三丰",
  "age": 18,
  "tags": [
    "boy",
    "monitor"
  ]
}

PUT /school/student/3/_create 
{
  "name": "王小强",
  "age": 19,
  "tags": [
    "cool",
    "player"
  ]
}

好了,我们创建了三个文档,
下面我们搜索一下看看呢?

{
  "query": {
    "match_all": {}
  }
}

搜索结果

针对tags字段搜索:

{
  "query": {
    "term": {
      "tags": "player"
    }
  }
}

搜索结果

如果查询整个字段多个值相等,需要用bool-must语法来确定

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "tags": "player"
          }
        },
        {
          "term": {
            "tags": "cool"
          }
        }
      ]
    }
  }
}

在这里插入图片描述

祝好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elasticsearch复合类型——数组类型新建,插入,查询 的相关文章

随机推荐

  • CUDA计算直方图(一)原子操作 atomicAdd

    参考 Shane Cook CUDA Programming A developer s guide to parallel computing with GPUs 目录 背景 使用CPU计算 使用CUDA 原子操作atomicAdd 背景
  • Centos7.9安装python的miniconda环境和配置conda镜像源

    1 Centos7 9安装miniconda Miniconda是一个 免费的 轻量级的 conda安装程序 conda是一个开源的包 环境管理器 能在同一个机器上安装不同Python版本的软件包及其依赖 以及在不同Python环境之间切换
  • win10中安装mysql5.7

    一 mysql5 7网盘下载 win32位win64位都可以用 链接 https pan baidu com s 1j3b1 jMu0FqFt1EZi9SqsQ 提取码 4dsk 二 解压 解压mysql 5 7 34 win32 zip文
  • matlab计算纹波电压,Zeta电路的参数计算及仿真

    Zeta电路的参数计算较为简单 可以用matlab来完成 代码如下 clear clc Vin 12 输入电压单位V Vout 18 输出电压单位V Fs 5000000 开关频率单位Hz Iout 1 输出电流单位A DeltaIin 0
  • 面试频率最高的JAVA问题

    请说说接口和抽象类的区别 估计90 的人都答不好 我的答案是 1 从使用目的来看 接口只是一个类间的协议 它并没有规定怎么去实现 抽象类可以重用你代码使你的代码更加简洁 2 从行为来看 接口可以多继承 multi implement 抽象类
  • 太晚睡觉等于自杀(献给年轻人)

    沉重的话题 一个97级的名校高才生 毕业后进入微软工作 上月死了 只不过25岁的黄金年龄 珍视自己的生命吧 大家 对自己好一点 对了 又听到一个悲伤的消息 广告界的好青年 又挂了一人了 此人是联旭的 是业务还是设计我也搞不清楚 前几天在连续
  • 类对象与初始化列表

    在类中定义的数据成员一般都是基本的数据类型 但是类中的成员也可以是对象 叫做对象成员 C 中对对象的初始化是非常重要的操作 当创建一个对象的时候 c 编译器必须确保调用了所有子对象的构造函数 如果所有的子对象有默认构造函数 编译器可以自动调
  • Linux systemd

    这里写目录标题 一 配置文件内容 二 配置文件位置 三 开机启动配置 四 systemctl使用 一 配置文件内容 systemd服务配置文件存放在 usr lib systemd目录下 有系统system和用户user之分 需要开机不登录
  • 自建XSS平台与BUUCTF[GWCTF 2019]mypassword

    自建XSS平台与BUUCTF GWCTF 2019 mypassword 1 需要用到的工具 BlueLotus XSSReceiver XSS数据接收平台firesunCN BlueLotus XSSReceiver github com
  • C++学习之模板特例化

    模板是C 中一个很重要的特性 写一份代码能用于多种数据类型 包括用户自定义类型 例如 STL的sort 函数可以用于多种数据类型的排序 类stack可以用作多种数据类型的栈 但是 如果我们想对特定的数据类型执行不同的代码 而不是通用模板 呢
  • 第二章 ZAB协议介绍

    第二章 ZAB协议介绍 ZAB ZooKeeper Atomic Broadcast ZooKeeper 原子消息广播协议 是zookeeper数据一致性的核心算法 ZAB 协议并不像 Paxos 算法那样 是一种通用的分布式一致性算法 它
  • https是如何保住信息安全的?

    https采用的是非对称加密以及对称加密混合的加密方式加密来保证用户安全的 他比http协议多了一层加密层 SSL TSL 要详细说明这个 我们要从不加密开始说起 如果不加密的话 浏览器和服务器的交流 很容易就会被第三方拦截 然后信息被偷看
  • iphone降级_iPhone完美降级已实现,checkm8实现降级iOS10.3.3

    前段时间苹果的A5 A11设备被爆出巨大硬件级漏洞 由一位信息安全人员axi0mX 在社交软件上分享了出来 原文翻译过来checkm8 漏洞是一个针对苹果历代产品不可修复的bootrom 嵌入处理器芯片内的一小块掩模ROM或写保护闪存 虽然
  • Yaoo Messenger For Vista发布了

    Yaoo Messenger For Vista发布了 下载地址 http messenger yahoo com download vista php 转载于 https www cnblogs com tangpepper archiv
  • 用 Go 语言实现视频处理服务:从 Java 到 Go 的完整指南

    本文将详细介绍如何使用 Go 语言开发视频处理服务 包括视频转码和拼接功能 我们将首先简要介绍 Go 语言的基本概念 然后通过对比 Java 和 Go 代码 详细介绍如何实现视频转码和拼接功能 并提供相应的代码示例 本教程旨在帮助 Java
  • springboot调用外部接口

    方式一 使用原始httpClient请求 description get方式获取入参 插入数据并发起流程 author lyx date 2022 8 24 16 05 params documentId return String Req
  • uos命令_研华IO卡之统信UOS+龙芯平台下的驱动丢失解决办法

    真是活久见了 在UOS 龙芯3A4000平台下安装好的驱动重启后居然不见了 经过两天的努力 总算把这个问题解决了 其实解决的思路很简单 就是在系统启动后自动执行安装脚本 但是问题总是层出不穷 常规标准的做法 比如在 etc profile
  • 【java基础】Token令牌生成 token加密串 生成token Aes加密 Base64加密 JWT 【附源码】

    Token令牌 生成工具 包括 头部 header 载荷 payload 签证 signature 先看效果 可以自定义加密盐 主要代码 TokenUtil java package com lgq common Util import c
  • 关于PermissionError: [WinError 5] 拒绝访问的解决方案

    在python使用pip命令安装各种package时 可能会发生下列现象 PermissionError WinError 5 拒绝访问 c program files python36 Lib site packages selenium
  • elasticsearch复合类型——数组类型新建,插入,查询

    多值字段 在一般开发情况下 我们想让某个字段包含多个字段 我们可以通过一个标签数组来代替单一字符串 tags boy monitor 对于数组不需要特殊的映射 任何一个字段可以包括零个 一个或者多个值 对于全文字段而言将被解析成多个词 数组