「PHP 構文 ElasticSearch」として再翻訳
P粉176203781
2023-08-28 15:43:18
<p>私は ElasticSearch の新しい手、对蟥询の動作原理はまだわかっていません...
私のインデックスの例</p>
<pre class="brush:php;toolbar:false;">{
「_インデックス」 : "インデックス001"、
「_タイプ」 : "_doc"、
「_id」 : "3"、
「_バージョン」 :1、
「_seq_no」 :242、
「_primary_term」 :2、
「見つかった」 : 真実、
「_ソース」 : {
「タイプ」 :1、
「サブタイプ」 : ヌル、
「ユーザー」 : {
「ID」 :1、
「名前」 : "tk6z2 gcnouvqmr"
}、
「エディターユーザー」 : [ ]、
「コンテンツ」 : [
{
「タイトル」 : 「タイトル #3」、
「ショートテキスト」 : "記事 #3 短いテキスト"、
「全文」 : "記事 #3 全文"、
「ロケール」 :「脱DE」
}
]、
「フラグ」 : [ ]、
「場所」 : [ ]、
「開始日」 : 1658793600、
「終了日」 : 1658793600、
「_users」 : [ ]
}
}</pre>
<p>私たちは、<code>content.title</code>と<code>content.short_text</code>を一致させて、<code>_users</code>フィールド監査ユーザーを介してテキストをテストすることを考えています。例,我的関数数是:</p>
<pre class="brush:php;toolbar:false;">パブリック静的関数検索(
文字列 $text = '',
int $user = 0
): 配列
{
試す {
$model = 新しい someModelClass();
$フィールド = [
'コンテンツ.タイトル',
'content.short_text',
];
$result = $model::find()->query( [
'ブール' => [
'べき' => [
'multi_match' => [
'クエリ' => $テキスト、
'フィールド' => $フィールド、
]、
]、
'フィルター' => [
[ '用語' => [ '_users.id' => $ユーザー ] ]、
[ '用語' => [ '_users' => [] ] ]、
】
]、
] )->all();
$result を返します。
}
catch (例外 $e ) {
throw new Exception( $e->getMessage() );
}
}</pre>
<p>これを SQL に変更します:<code>SELECT * FROM 'indexing001' WHERE (content.title LIKE %search% OR content.short_text LIKE %search%) AND (users.id = 1 OR)ユーザー = '')</code>
どのようにElasticSearch查询中编写它にありますか?
</p> 前感谢!
この場合、Elasticsearch-PHP クライアントを使用することをお勧めします。
適切なクライアントを インストールするには、composer を使用してください。
次の一致クエリの場合
リーリー以下に示すように、PHP スクリプトでクエリを実行できます
リーリーその他のアクションについては、こちらをご覧ください。