ElasticSearch备考 -- Multi field

一、题目

Create the index `hamlet_2` with one primary shard and no replicas

Copy the mapping of `hamlet_1` into `hamlet_2`, but also define a multi-field for `speaker`. The name of such multi-field is `tokens` and its data type is the (default) analysed string

Reindex `hamlet_1` to `hamlet_2`

`hamlet_1` index mapping

{

"line_number": "text",

"speaker": "text",

"text_entry": "text"

}

Verify that full-text queries on "speaker.tokens" are enabled on `hamlet_2` by running the following command:

GET hamlet_2/_search

{

"query": {

"match": { "speaker.tokens": "hamlet" }

}

}

二、思考

我们来分析一下题目的要求,其中说要求拷贝`hamlet_1`mapping定义,并且要求顶一个的多字段类型speaker,其中一个字段名字叫tokenle,类型为文本类型。

多字段其实主要考察mapping的自定义,我们可以理解为一个字段有多种类型,是通过fields关键字段实现。

三、解题

Step 1、创建 `hamlet_1` mapping

bash 复制代码
PUT /hamlet_1
{
  "mappings": {
    "properties": {
      "line_number": {
        "type": "text"
      },
      "speaker": {
        "type": "text"
      },
      "text_entry": {
        "type": "text"
      }
    }
  }

Step 2、拷贝索引hamlet_1结构创建hamlet_2索引

索引中settings 配置

  • number_of_shards:索引分片数量
  • number_of_replicas:索引中备份数量

多字段要使用fileds 关键字,定义字段和mapping中最外层字段定义一样

bash 复制代码
PUT /hamlet_2
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "line_number": {
        "type": "text"
      },
      "speaker": {
        "type": "text",
        "fields": {
          "token": {
            "type": "text"
          }
        }
      },
      "text_entry": {
        "type": "text"
      }
    }
  }
}

Step 3、reindex 数据

bash 复制代码
POST _reindex
{
  "source": {
    "index": "hamlet_1"
  },
  "dest": {
    "index": "hamlet_2"
  }
}

Step 4、执行查询

bash 复制代码
GET hamlet_2/_search
{
  "query": {
    "match": {
      "speaker.tokens": "hamlet"
    }
  }
}

四、总结

mapping中多字段定义要是使用关键字 fileds,创建字段和最外层字段格式一样

参考资料

送一波福利:

福利一

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

福利二

福利三

相关推荐
TDengine (老段)3 分钟前
TDengine 转换函数 TO_JSON 用户手册
android·大数据·数据库·json·时序数据库·tdengine·涛思数据
好奇龙猫21 分钟前
【AI学习-lora-定义-comfyUI相关-相关学习-了解概念(1)】
人工智能·学习
冯诺依曼的锦鲤1 小时前
算法练习:差分
c++·学习·算法
rgb2gray1 小时前
增强城市数据分析:多密度区域的自适应分区框架
大数据·python·机器学习·语言模型·数据挖掘·数据分析·llm
expect7g1 小时前
Paimon源码解读 -- PartialUpdateMerge
大数据·后端·flink
im_AMBER2 小时前
算法笔记 16 二分搜索算法
c++·笔记·学习·算法
赵文宇(温玉)2 小时前
不翻墙,基于Rancher极速启动Kubernetes,配置SSO登录,在线环境开放学习体验
学习·kubernetes·rancher
中國龍在廣州2 小时前
现在人工智能的研究路径可能走反了
人工智能·算法·搜索引擎·chatgpt·机器人
lingggggaaaa3 小时前
免杀对抗——C2远控篇&PowerShell&有无文件落地&C#参数调用&绕AMSI&ETW&去混淆特征
c语言·开发语言·笔记·学习·安全·microsoft·c#
q***47184 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch