Diterjemah semula sebagai: "Sintaks PHP ElasticSearch"
P粉176203781
2023-08-28 15:43:18
<p>我是ElasticSearch的新手,對查詢的工作原理不太了解...
我的索引示例</p>
<pre class="brush:php;toolbar:false;">{
"_index" : "pengindeksan001",
"_jenis" : "_doc",
"_id" : "3",
"_versi" : 1,
"_seq_no" : 242,
"_penggal_utama" : 2,
"ditemui" : benar,
"_sumber" : {
"taip" : 1,
"sub_type" : null,
"pengguna" : {
"id" : 1,
"nama" : "tk6z2 gcnouvqmr"
},
"pengguna_editor" : [ ],
"kandungan" : [
{
"tajuk" : "Tajuk #3",
"teks_pendek" : "Artikel #3 teks pendek",
"teks_penuh" : "Artikel #3 teks penuh",
"tempatan" : "de-DE"
}
],
"bendera" : [ ],
"lokasi" : [ ],
"tarikh_mula" : 1658793600,
"tarikh_akhir" : 1658793600,
"_pengguna" : [ ]
}
}</pre>
<p>我想查詢文本以匹配字段<kod>content.title</code>和<kod&g;content.short_text</kod>,通業(yè)kod<<<詢用戶。例如,我的函數(shù)是:</p>
<pre class="brush:php;toolbar:false;">carian fungsi statik awam(
rentetan $teks = '',
int $pengguna = 0
): tatasusunan
{
cuba {
$model = new someModelClass();
$fields = [
'content.title',
'content.short_text',
];
$result = $model::find()->query( [
'bool' => [
'sepatutnya' => [
'multi_match' => [
'pertanyaan' => $teks,
'medan' => $fields,
],
],
'penapis' => [
[ 'istilah' => [ '_users.id' => $user ] ],
[ 'istilah' => [ '_pengguna' => [] ] ],
]
],
] )->semua();
pulangkan $hasil;
}
tangkap ( Pengecualian $e ) {
buang Pengecualian baru( $e->getMessage() );
}
}</pre>
<p>將其轉換為SQL應該是這樣的:<kod>PILIH * DARI 'indexing001' DI MANA (content.title SEPERTI %search% ATAU content.short_text SEPERTI %search%) DAN (users.id = 1 pengguna = '')</code>
如何在ElasticSearch查詢中編寫它?
提前感謝!</p>
Dalam kes ini, saya mengesyorkan menggunakan Elasticsearch-PHPpelanggan.
Sila gunakan komposer untuk memasang pelanggan yang sesuai.
Untuk pertanyaan padanan berikut
curl -XGET 'localhost:9200/my_index/_search' -d '{
"query" : {
"match" : {
"testField" : "abc"
}
}
}'
Anda boleh menanyakannya dalam skrip PHP anda seperti yang ditunjukkan di bawah
$params = [
'index' => 'my_index',
'body' => [
'query' => [
'match' => [
'testField' => 'abc'
]
]
]
];
$results = $client->search($params);
Lihat lebih banyak aksi di sini.
Suka +0
P粉176203781