索引主对象,子对象,并对子对象(返回sib-objects)进行搜索

时间:2017-04-14 13:23:26

标签: elasticsearch foselasticabundle

我有一个像这样的对象(这里简化),每个菌株都有很多染色体,有许多基因座,有很多特征,有很多产品,......在这里我只放了1个。

json中的结构是:

{
  "name": "my strain",
  "public": false,
  "authorized_users": [1, 23, 51],
  "chromosomes": [
    {
      "name": "C1",
      "locus": [
        {
          "name": "locus1",
          "features": [
            {
              "name": "feature1",
              "products": [
                {
                  "name": "product1"
                  //...
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

我想在Elasticsearch中添加这个对象,目前我已经分别添加了对象:locus,features和products。可以进行搜索(我想键入一个关键字,以locus名称,功能名称和产品名称进行观察),但我需要在每个子对象中复制public和authorized_users等数据。

我可以在elasticsearch中注册整个对象,只需搜索每个基因座级别,功能和产品吗?并单独获得它? (不返回Strain对象)

1 个答案:

答案 0 :(得分:0)

是的,您可以在任何级别进行搜索(例如,使用“chromosomes.locus.name”之类的查询)。

但是,由于每个级别都有数组,因此您必须使用嵌套对象(和嵌套查询)来获得您想要的内容,这有点复杂:

对于你的上一个问题,不,你不能单独获得子对象,弹性返回整个json源对象。 如果只需要来自子对象的数据,则必须使用嵌套聚合。