【Elasticsearch】使用IMDB学习ES(3) 设计映射结构

目录

本系列正在更新,点击下方查看

理解字段含义

根据第一步我们使用python脚本扫描出的文本结构,我们可以得到每行数据的结构如下

{
	'titleId': 'tt0012941',
	'ordering': '3',
	'title': 'Billy Jim',
	'region': 'US',
	'language': '\\N',
	'types': '\\N',
	'attributes': '\\N',
	'isOriginalTitle': '0'
}

根据官网给出的描述,可以按如下理解对应字段

- titleId 唯一标识
- ordering 排序字段,唯一的
- title 标题
- region 区域
- language 语言
- types 类型,可能出现多个但不仅有 "alternative", "dvd", "festival", "tv", "video", "working", "original", "imdbDisplay"
- attributes 属性
- isOriginalTitle 是否为原始标题

根据业务设计字段映射

由于我们是自主学习,并没有实际的业务去支撑,所以我们根据字段的实际含义来设计对应的业务需求,并采用对应的类型映射。

titleId & ordering

这里要注意的是,实际上这两个标识并不是唯一的。如果需要唯一,那就要把这两个组合在一起。

在根据实际业务开发过程中,一定要多看几眼,避免因为语言和文化差异导致的对需求的理解偏差。

在这里插入图片描述

title & region & language

这三个属于字符串类型的业务字段,要注意的是数据会以\N作为没有数据的填充,这个不需要导入ES数据中。

types & attributes

这两个业务字段属于数组类型,业务上可能需要多选查询。

isOriginalTitle

布尔类型的值,业务上需要勾选是否。

确定ES映射

业务分析

根据上面的业务分析,我们可以得出如下结果

  • titleId,模糊搜索
  • ordering,精准匹配
  • title,模糊搜索
  • region,精准匹配
  • language,精准匹配
  • types,数组内元素的精准匹配
  • attributes,数组内元素的精准匹配
  • isOriginalTitle,精准匹配

同时,由于这些字段内并没有完全的唯一标识,我们把titleId和ordering进行拼接,得到一个系统内的唯一标识,并命名为id

确认映射

  • id text
  • titleId text
  • ordering integer
  • title text
  • region keyword
  • language keyword
  • types array
  • attributes array
  • isOriginalTitle boolean

其中array内部存放string类型

声明映射

根据上一步分析,映射声明脚本如下

PUT imdb
{
    "mappings": {
            "properties": {
                "id": { "type": "text" },
                "titleId": { "type": "text" },
                "ordering": { "type": "integer" },
            	  "title": { "type": "text" },
            	  "region": { "type": "keyword" },
            	  "language": { "type": "keyword" },
                "types": { "type": "keyword" },
                "attributes": { "type": "keyword" },
                "isOriginalTitle": { "type": "boolean" }
            }
    }
}

创建成功

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "imdb"
}

在索引管理中可以查看到刚才创建的映射

在这里插入图片描述

总结

  • 根据实际业务设计映射
  • 业务上的坑不少需要花时间理解透彻

参考资料

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html
雨果虾滑猫 CSDN认证博客专家 PHP MySQL Python
CSDN博客专家。PHP/MYSQL/Elasticsearch,PMP项目管理 ,产品设计。6年服务端开发,2年产品,连续创业者,曾经参与区块链、新零售行业创业。Gitchat作者,曾在Gitcchat发布智能合约相关课程。
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值