如何过滤在elasticsearch中搜索后返回的字段?

时间:2014-03-28 01:26:23

标签: elasticsearch

假设我的文档索引如下:

{
    category: "fruits",
    items: [
        {
            name: "Apple",
            shape: "Round",
            color: "red"
        },
        {
            ...
        }
    ]
}

假设我想搜索所有字段,但只返回:

  1. items仅限字段
  2. items字段,但只有nameshape字段(不是列表中的color字段)

2 个答案:

答案 0 :(得分:2)

您可以通过指定保留的_source field来过滤/删除source(整个文档)中的字段:

要仅检索items,请指定如下过滤器:

{
    "_source" : "items.*",
    "query" : ...
}

要检索感兴趣的特定items,有多种方法,但如果您全部了解它们(而不是需要通配符排除支持):

{
    "_source" : [ "items.name", "items.shape" ],
    "query" : ...
}

或者,如果不是那么简单:

{
    "_source" : {
        "include" : [ "items.*" ],
        "exclude" : [ "items.color" ]
    }
    "query" : ...
}

这提供了最大的灵活性。

答案 1 :(得分:1)

您可以限制在查询中使用字段..比如

   {
    Query:{
                 Bla bla bla
                 }, 
   Fields :["items . name", "items.shape"] 
     }