如何省略Elasticsearch元数据?

时间:2018-06-23 15:24:08

标签: elasticsearch metadata

是否可以从JSON属性中删除两个匹配和_source属性。我知道这种方法:filter_path = hits.hits._source可以完成几乎所有事情。

让我回应一下:

{
    "took" : 3,
    .....

    "hits" : {
        ......
        "hits" : [
            ....
            "_source" : {
                "name" : "test name",
                "age" : 20
            }
        ]
    }
}

我想得到这样的答复:

[
    {
        "name:" "test name",
        "age" : 20
    }
]

2 个答案:

答案 0 :(得分:0)

您可以通过在索引之前禁用 _source 来将其忽略:

PUT tweets
{
  "mappings": {
    "doc": {
     "_source": {
       "enabled": false
      }
    }
  }
}

建立索引后,当您搜索索引时,它将没有 _source

GET tweets/_search

将返回:

"hits": [
  {
    "_index": "tweets",
    "_type": "doc",
    "_id": "1",
    "_score": 1
  }
]

我不确定您为什么不想忽略这些热门歌曲?让我知道,然后我将更新答案。

即使您可以使用以下方法,也可以省略 _source

GET twitter/_search
{
  "_source": "null"
}

将返回:

"hits": [
  {
    "_index": "tweets",
    "_type": "doc",
    "_id": "1",
    "_score": 1,
    "_source": {}
  }
]

注意::从Elasticsearch返回的数据为JSON格式,如果您的应用程序不需要该JSON中的某些字段,则可以在序列化时将其忽略。

答案 1 :(得分:0)

感谢您更新问题,据我所知我们无法在Elasticsearch中做到这一点,一种可能的解决方案是在序列化返回的数据时在您的应用程序中做到这一点。即使使用 filter_path ,您也会获得相同的层次结构。如果您希望更改该层次结构,则必须在应用程序中进行更改。