Ich habe drei Felder - eines der Integer-Typ (Feld1) und zwei der Dezimal-Typ (Feld2, Feld3). Ich möchte nach allen Feldern abfragen können. Diese separaten Abfragen schön arbeiten in meiner Situation:Elasticsearch und PHP. Combine match und multi_match in einer Abfrage
$params = [
'index' => 'test_index',
'type' => 'text_index_type',
'body' => [
'query' => [
'match' => [
'field1' => '12'
]
]
]
];
und diese Abfrage funktioniert gut:
$params = [
'index' => 'test_index',
'type' => 'text_index_type',
'body' => [
'query' => [
'multi_match' => [
'query' => '345',
'fields' => ['field2', 'field3']
]
]
]
];
Wenn aber ich kombiniere sie:
$params = [
'index' => 'test_index',
'type' => 'text_index_type',
'body' => [
'query' => [
'match' => [
'field1' => '12'
],
'multi_match' => [
'query' => '345',
'fields' => ['field2', 'field3']
]
]
]
];
Ich erhalte eine Fehlermeldung:
Uncaught exception 'Elasticsearch\Common\Exceptions\BadRequest400Exception' ... [match] malformed query, unexpected [FIELD_NAME] found [multi_match]
Also, was ist falsch und wie kann ich es beheben?
PS. In Bezug auf die SQL, ist das, was ich achive wollen:
SELECT * FROM mytable where field1 = 12 or field2 = 345 or field3 = 345
von übrigens, es ist eine vereinfachte Abfrage. In der realen Welt werde ich viel mehr Felder haben, also muss ich wirklich 'multi_match' verwenden. – Jacobian