首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索深树模型

弹性搜索深树模型
EN

Stack Overflow用户
提问于 2017-02-16 09:22:38
回答 1查看 1.4K关注 0票数 2

我正在研究数据库工具,我不太确定弹性如何能够满足我的需求。

我有一个树数据结构,一个家族树。

根是第一个人亚当,然后是他的孩子,还有孩子等等。

元素看起来如下(不关心婚姻关系-这些数据只是为了得到想法):

代码语言:javascript
复制
{
  id: 1
  name: “Adam”
  parentId: 0
}, {
  id: 2
  name: “Cain”
  parentId: 1
}, {
  id: 3
  name: “Abel”
  parentId: 1
}, {
  id: 4
  name: “johnny(Cain junior)”
  parentId: 2
}, … {
  id: 12324568
  name: “Cain b”
  parentId: 1434
}

我想要执行的查询:

  1. 对元素名称的“‘full text”搜索,响应应该包括文档和它们的路径。例如,搜索“Cain”应该重播: a.亚当/凯恩 大卫/丹尼/凯恩b
  2. CRUD person by id (id是唯一的)
  3. 通过id获取家族树,将响应层次树(嵌套JSON),从‘id’作为根
  4. 树大约有20-30层深,高达10,000元素。

最后,我的问题是:

  1. elasticsearch能为我提供这个功能吗?
  2. 我应该使用父/子计划吗?
  3. 索引映射应该是什么样子。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 10:54:10

回答你的问题:

3)索引映射可能如下所示:

代码语言:javascript
复制
 {
  "mappings": {
    "my_index": {
      "properties": {
        "id": {
          "type": "integer",
          "fielddata": true <-- you need this if you're using this field for aggregations
        },
        "parentId": {
          "type": "integer"
        },
        "name": {
          "type": "text" <-- can be text/keyword depending on your requirement
        }
      }
    }
  }
}

2)我建议您使用亲子映射,这样您就可以拥有一对多的关系。Elasticsearch维护父母如何与其子女通信的映射,而且查询时联接由于此映射而快速。您可以阅读这个所以,以了解嵌套的父-子映射的基准。

1)只要将full text字段的类型映射为text,就可以始终执行搜索。应该可以帮助您识别使用text而非keyword类型的区别。可以向索引中添加单个文档,也可以使用包含多个文档的散装添加。这与其他CRUD操作并驾齐驱。当您通过父id请求文档时,我仍然不知道层次树会如何响应。

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42269678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档