Запрос разных данных с разными условиямиPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Запрос разных данных с разными условиями

Сообщение Anonymous »

В моей базе данных elastcsearch проиндексированы различные типы документов. Каждый тип представляет собой таблицу из моей базы данных MySQL. У нас есть настройка для индексации этих табличных данных в эластичную базу данных. У меня есть столбец project_id во всех таблицах, кроме одной таблицы с именем «продукты». Только в таблице «продукты» у меня есть столбец «project_ids», в котором хранятся несколько идентификаторов проекта в значениях, разделенных запятыми.
Теперь, когда я ищу, я также передаю несколько идентификаторов проектов в качестве входных данных. Для всех других таблиц (индексированные данные) поиск должен вернуться, когда их столбец «project_id» соответствует любому идентификатору проекта, который я передаю в моих входных данных. Только из индексированных данных типа «продукты» поиск должен возвращать их только в том случае, если все переданные идентификаторы проектов присутствуют в значении, разделенном запятыми.
Например...
if Данные столбца project_ids равны «1,4,5», тогда поиск (массивов) «1,5», «1» или «1,4» и т. д. должен вернуть эти данные о продукте. Но поиск «1,7» или «4,6» не должен возвращать никаких данных.
В том же случае из другого типа индексированных данных для поиска «1,5 (как массив)» он должен возвращать все данные, имеющие столбец «project_id» с любым переданным значением. если идентификатор проекта равен 1 или 5, данные должны вернуться. я использую PHP.
Пытаюсь настроить такой фильтр..

Код: Выделить всё

$terms_group = [];

foreach ([ARRAY_OF_PROJECT_IDS] as $project_id_for_term) {
$terms_group[] = [
'term' => [
'project_ids' => $project_id_for_term
]
];
}

$filter = [
'bool' => [
'minimum_should_match' => 1,
'should' => [
[
'bool' => [
'must' => [
[
'terms' => [
'project_id' => [ARRAY_OF_PROJECT_IDS]
]
]
],
'must_not' => [
[
'terms' => [
'table_name.keyword' => ['products']
]
]
]
]
]
],
'should' => [
[
'bool' => [
'must' => [
[
'terms' => [
'table_name' => ['products']
]
]
],
'must_not' => [
[
'terms' => [
'table_name.keyword' => ['projects', 'city', 'states', 'parks', 'contracts', 'reports']
]
]
],
'must' => $terms_group
]
]
]

]
];
Но я вижу, что некоторые результаты, такие как парки / контракты, вообще не приходят в результат, хотя в результате я вижу город и штат. есть ли проблемы с формированием моего запроса?

Подробнее здесь: https://stackoverflow.com/questions/788 ... conditions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»