Как получить весь источник поиска в клиентеasticsearch golang? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть индекс со слишком большим количеством полей, например, у одного документа есть 6 полей, а у другого - разное количество полей, вместе насчитывается около тысячи различных полей.

Я следовал этому https://github.com/olivere/elastic/wiki/Search,, он работает нормально, но я не могу создать структуру из всех полей и сделать json.Unmarshal(*hit.Source, &t) на этом. Есть ли способ, которым я могу получить весь источник без структуры полей.

я использую версиюasticsearch -7 и библиотеку olivreasticsearch golang.

1 Ответ

0 голосов
/ 14 июня 2019

Если я правильно понимаю, вы не хотите отменять маршализацию результата json - вам просто нужен доступ к значению.

Операция поиска возвращает SearchHit результат документы здесь

Которое имеет поле

type SearchHit struct {
    // trimmed
    Source         json.RawMessage                `json:"_source,omitempty"`         

}

A json.RawMessage - это просто []byte, документы здесь .

Таким образом, чтобы получить его как строку, вы можете сделать:

s := string(hit.Source)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...