I Elasticsearch 2.2.0 verwende und ich bin drin. Ich möchte das Ergebnis mit zwei Filtern suchen, aber es zeigt mir einen schwerwiegenden Fehler: Abfrage unterstützt nicht mehrere Felder.Mehrere Begriffe Filter funktioniert nicht auf Elasticsearch
Zwei Filter sind:
plocation: china
pcategoryid: 0,20,21
Hier ist mein Code:
$search = 'Doors';
$limit = 6;
$params = [
'index' => 'product',
'body' => [
'query' => [
"bool" => [
"should" => [
'multi_match' => [
"fields" => [
"pname",
"pmodel",
"pcategoryname",
"pmetakeyword"
],
"query" => $search,
"type" => "phrase",
"boost" => 10
],
'multi_match' => [
"fields" => [
"pname",
"pmodel",
"pcategoryname",
"pmetakeyword"
],
"query" => $search,
"type" => "most_fields",
"fuzziness" => "1",
"boost" => 0
]
]
],
],
"filter" => [
"bool" => [
"must" => [
"term" => [
"ptypeid" => 1
]
],
"should" => [
"term" => [
"psearchstatus" => 1
]
],
"filter" => [
"terms" => [
"plocation" => ['china'], "pcategoryid" => [0,20,21]
]
]
],
],
"from" => ($page - 1) * $limit,
"size" => $limit
],
];
$client = Elasticsearch\ClientBuilder::create()->build();
$response = $client->search($params);
$results = $response['hits']['hits'];
Gibt es einen anderen Weg, um zu gehen, was ich zu tun versuchen, oder bin ich auf dem richtigen Weg?
geben Sie bitte auch die Struktur des Index/Typs – Dekel