Как опустить метаданные Elasticsearch? - PullRequest
0 голосов
/ 23 июня 2018

Есть ли способ удалить два попадания и атрибут _source из атрибута JSON. Я знаю этот подход: filter_path = hit.hits._source, который выполняет почти все.

Допустим, у меня есть ответ:

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

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

И я хочу получить такой ответ:

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

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Спасибо за обновление вопроса, насколько я знаю, мы не можем сделать это вasticsearch, возможное решение состоит в том, чтобы сделать это в вашем приложении при сериализации возвращаемых данных. Даже используя filter_path , вы получите ту же иерархию. Если вы хотите изменить эту иерархию, вам придется сделать это в своем приложении.

0 голосов
/ 24 июня 2018

Вы можете опустить _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, вы можете пропустить их при сериализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...