ElasticSearch仅提供第一级属性

时间:2018-04-03 09:59:33

标签: java elasticsearch elasticsearch-dsl

我将json下面的索引编入es。

{
 "id":"1234",
 "ad":{
                  "id": "50419957",
                  "priority": 1
                },
"div":["adb", "dfg"],
"startDate": 1533193200000,
"endDate": 1534489199000
}

是否可以单独过滤原始属性(id,startDate,endDate)?

我在json中有超过50个字段。还有许多嵌套对象。我需要过滤掉第一级属性(也只过滤字符串和数字,而不是数组)。

我不能拥有

  

包含/排除_source

因为还有很多动态字段。

1 个答案:

答案 0 :(得分:0)

您可以使用_source param

e.g。

_source=id

将仅返回所有文档的ID,

你甚至可以做多个领域:

_source=id,startDate,endDate

将返回所有字段的id,startDate和endDate

有关更多信息以及使用查询结构,请参阅文档:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html

编辑1

没有办法根据类型包含/排除。

但是,如果您需要类型,您可以解析类型的_mapping,请获取所需的数据(在您的案例字符串中以及第一级的长度)并自动执行。