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>,通業kod<<<询用户。例如,我的函数是:</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
Anda boleh menanyakannya dalam skrip PHP anda seperti yang ditunjukkan di bawah
Lihat lebih banyak aksi di sini.