Rumah  >  Soal Jawab  >  teks badan

Diterjemah semula sebagai: "Sintaks PHP ElasticSearch"

<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粉176203781P粉176203781390 hari yang lalu444

membalas semua(1)saya akan balas

  • P粉421119778

    P粉4211197782023-08-29 00:46:01

    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.

    balas
    0
  • Batalbalas