Diterjemah semula sebagai: "Sintaks PHP ElasticSearch"
P粉176203781
P粉176203781 2023-08-28 15:43:18
0
1
542
<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>
P粉176203781
P粉176203781

membalas semua(1)
P粉421119778

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan