Как гласит заголовок, я пытаюсь сделать запрос, который не возвращает весь документ, а только определенные поля, но с несколькими точными терминами.
Я использую Guzzle из Laravel для создания моего запроса:
$response = $client->post('cvr-permanent/_search', [
'auth' => ['USERNAME', 'PASSWORD'],
'json' => [
"_source" => ["Vrvirksomhed.attributter", "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter"],
"query" => [
"bool"=> [
"must"=> [
[
"term"=> [
"Vrvirksomhed.cvrNummer" => $vat
]
]],
"must_not"=> [ ],
"should"=> [ ]
]
],
"from"=> 0,
"size"=> 10,
"sort"=> [ ]
]
]);
Я хочу получить данные из Vrvirksomhed.cvrNummer
, а данные, которые мне нужны, это где Vrvirksomhed.attributter.type => "KAPITAL"
и Vrvirksomhed.deltagerRelation.deltager.navne
и где Vrvirksomhed.deltagerRelation.organisation.attributter.type = "EJERANDEL_PROCENT"
Я очень озадачен тем, как заставить этот запрос работать, потому что это несколько терминов, но не совсем. Также очень плохо знаком с эластичным поиском.
Я попробовал «условия», но не смог заставить его работать.
Запрос, который я сделал выше, возвращает слишком много данных, которые мне не нужны, и не все данные, которые мне НУЖНЫ.
Надеюсь, что вы можете помочь
** EDIT
Нечто подобное может быть, но переведено наasticsearch
SELECT attributter.type": "KAPITAL" AND deltagerRelation.deltager.navne AND deltagerRelation.organisation.attributter.type": "EJERANDEL_PROCENT FROM Vrvirksomhed WHERE cvrNummer = $vat
*** EDIT
Надеюсь, больше разъяснений:
Хорошо, извините, постараюсь прояснить ситуацию. Объект, который я хочу, - это компания с определенным номером НДС. Так что Vrvirksomhed.cvrNummer
это то, и это должен быть термин. Он возвращает гигантский объект с таким количеством массивов в массивах. Я не хочу все эти данные, но только некоторые из них. Данные, которые мне нужны от этого большого объекта, - это объект в массиве Vrvirksomhed.attributter
с полем type : "KAPITAL
, а не все атрибуты. Тогда я хочу Vrvirksomhed.deltagerRelation.deltager.navne
, который я могу получить, просто поместив его в _source
, потому что я хочу все эти объекты. Но тогда я хочу Vrvirksomhed. deltagerRelation.organisation.attributter
, что опять-таки является кучей объектов в массиве attributter
, но я хочу только те, с type : "EJERANDEL_PROCENT
Так что я не могу добавить их в качестве дополнительных «терминов», потому что единственный реальный термин - это «cvrNummer», а все остальное - просто фильтрация ответа. Я пытался с фильтрами и т. Д., Но безрезультатно
Вот пастбина, так что вы можете видеть кластерного фуха, с которым я имею дело. Это то, что я смог отсортировать до сих пор, поместив вещи в _source
, но без дополнительной «фильтрации» «KAPITAL» и «EJERANDEL_PROCENT»
https://pastebin.com/b8hWWz1R