从Elasticsearch说开去:Elasticsearch中特殊数据类型的处理

2020-05-22 00:00:00 查询 字段 文档 示例 聚集

文/田雪松


Elasticsearch索引字段中定义了一些特殊数据类型,用于反映某些特殊的数据关系或数据表示方法。由于这些数据类型都与一组DSL查询和聚集查询相关联,所以本书在第2章第2.3节中并没有介绍它们,而是集中在这一章统一介绍。这些特殊数据类型主要包括join类型、nested类型和地理坐标。

除了DSL和聚集查询以外,Elasticsearch在Basic授权中还提供了一种基于SQL语法的查询语言,这种查询语言可以以类似SQL语言的形式执行文档检索。由于这种SQL语言在Kibana画布功能中需要使用,所以本章在后一小节会对它做简要介绍。

1 父子关系

Elasticsearch中的父子关系是单个索引内部文档与文档之间的一种关系,父文档与子文档同属一个索引并通过父文档_id建立联系,类似于关系型数据库中单表内部行与行之间的自关联。

1.1 join类型

在Elasticsearch中并没有外键的概念,文档之间的父子关系通过给索引定义join类型字段实现。例如创建一个员工索引employees,定义一个join类型的management字段用于确定员工之间的管理与被管理关系:

PUT employees
{
 "mappings": {
 "properties": {
 "management":{
 "type": "join",
 "relations": {
 "manager":"member"
 }
 }
 }
 }
}

相关文章