筛选出现在弹性搜索中的对象列表中的值

时间:2019-06-28 09:22:55

标签: elasticsearch elasticsearch-dsl elasticsearch-py

我被困在一个无法构造查询的地方,该查询将帮助我查询实际上是对象列表的特定字段。 样本文件:

"sample_object" : {
    "name" : "TRS",
    "name_number" : 2096873,
    "dob" : "2011-02-09",
    "sample_nested_object_1" : {
        "id" : 6,
        "name" : "example name"
    },
    "sample_nested_object_list_1" : [
      {
          "id" : 15,
          "number" : 12
      },
      {
          "id" : 18,
          "number" : 15
      }
    ],
    "sample_nested_object_list_2" : [
      {
          "id" : 2958179,
          "name" : "example name 1",
          "type" : "example type"
      },
      {
          "id" : 2958180,
          "name" : "example name 2",
          "type" : "example type"
      }
    ],
    "sample_nested_object_2" : {
        "id" : 4,
        "name" : "sample name"
    }
}

我已经成功进行了根据 名称 名称编号 进行过滤的查询dob

我必须根据前端应用的过滤器查询数据集。因此,我将收到 sample_nested_object_list_1 id 列表,并且必须找到 sample_nes(s)其中具有 sample_nested_object_list_1 并提供了 id 。还必须对 sample_nested_object 做同样的事情。

更新:

索引映射:

sample_object= {
    'name': StringField(),
    'name_number': IntegerField(),
    'dob': DateField(),
    'sample_nested_object_1': ObjectField(
        properties={
            'id': IntegerField(),
            'name': StringField(),
        }
    ),
    'sample_nested_object_list_1': NestedField(
        properties={
            'id': IntegerField(),
            'number': IntegerField(),
        }
    ),
    'sample_nested_object_list_2': NestedField(
        properties={
            'id': IntegerField(),
            'name': StringField(),
            'type': StringField(),
        }
    ),
    'sample_nested_object_2': ObjectField(
        properties={
            'id': IntegerField(),
            'name': StringField(),
        }
    ),
}

查询:

如果要检索 sample_object(s)的列表,我想不出如何构造查询,该列表的 id_sample_nested_object_list_1 分别为15、16和 sample_nested_object_1 ,其ID为6。

0 个答案:

没有答案