elasticsearchサーバで複数のクエリを1回のリクエストで実行したい。具体的に私が何をしたいのか、次のクエリ(elastcisearch-PHP-クライアントである)1つのリクエストで2つのクエリを結合する
$params = [
"index" => "bookydate",
"type" => "vendor_service",
"body" => [
"query" => [
"bool" => [
"must" => [
"term" => [
"sys_service_id" => $request->input("sys_service_id")
]
],
"should" => [
"geo_shape" => [
"served_location" => [
"shape" => [
"type" => "point",
"coordinates" => [
"{$request->input('loc_lon')}",
"{$request->input('loc_lat')}"]
]
]
]
]
]
]
]
];
を持ってもtrue
に"hole_country"
フィールドを持っているすべての文書を取得します。
私はすでに試してみました、サーバーをElasticsearchとarray_merge
を持つ2つの結果を結合ますが、理由は複数のキーと同じキーを持つアレイ上のPHPの制限の機能しなかったために別の要求をすることです。
UPDATE
Elastcisearchは、IMが探して正確に何であるMultisearch
と呼ばれる機能をサポートしています。問題は、php-clientがマルチサーチをサポートしていないので、リクエストを送信するためにGuzzleを使用する必要があることです。
Guzzle docsには、正しいリクエスト本文を構成する方法に関する完全な情報がありません。任意の情報
歓迎すでに私は、次の体を持っているが、あなたはElasticsearchのmultisearchのAPIを使用することができます不正な要求エラーに$body = [
["index"=>"bookydate"],
["query"=>["bool"=> ["must"=>[["term"=>["sys_service_id"=>"1"]],["geo_shape"=>["served_location"=>["shape"=>["type"=>"circle","coordinates"=>[25,3],"radius"=>"90km"]]]]]]]],
["index"=>"bookydate"],
["query"=>["bool"=>["must"=>["term"=>["hole_country"=>true]]]]]
];
私にとってうまく、私のニーズに合っていれば、マルチサーチです。実際にPHPクライアントはmsearchをサポートしていないので、リクエストを送信するためにguzzleを使用しました。しかし、私は正しい体を送る方法についていくつかの問題に取り組まなければならない。私の更新を見てください – dios231