重新翻譯為:"PHP語法的ElasticSearch"
P粉176203781
P粉176203781 2023-08-28 15:43:18
0
1
397

我是ElasticSearch的新手,對查詢的工作原理不太了解... 我的索引範例

{ “_index” :“索引001”, “_type” :“_doc”, “_id” :“3”, “_版本” : 1, “_seq_no” :242, “_primary_term” : 2, “發現” : 真的, “_來源” :{ “類型” : 1, “子類型” : 無效的, “用戶” :{ “id” : 1, “姓名” :“tk6z2 gcnouvqmr” }, “編輯者_用戶” : [ ], “內容” :[ { “標題” :“標題#3”, “短文本” :“第 3 條短文”, “全文” :“第 3 條全文”, “區域設定” :“de-DE” } ], “旗幟” : [ ], “地點” : [ ], “開始日期” : 1658793600, “結束日期” : 1658793600, “_用戶” :[ ] } }

我想查詢文字文字以符合欄位content.titlecontent.short_text,透過_users欄位查詢使用者。例如,我的函數是:

公用靜態函式search( 字串 $text = '', 整數$用戶= 0 ): 大批 { 嘗試 { $model = new someModelClass(); $字段= [ '內容.標題', '內容.short_text', ]; $結果 = $model::find()->query( [ '布爾' => [ '應該' => [ '多匹配' => [ '查詢' => $文本, '字段' => $字段, ], ], '過濾器' => [ [ '術語' => [ '_users.id' => $用戶]], [ '術語' => [ '_users' => [] ] ], ] ], ] )->全部(); 回傳$結果; } 捕獲(異常$e){ 拋出新的例外( $e->getMessage() ); } }

將其轉換為 SQL 應該是這樣的:SELECT * FROM 'indexing001' WHERE (content.title LIKE %search% OR content.short_text LIKE %search%) AND (users.id = 1 OR使用者= '') 如何在ElasticSearch查詢中編寫它? 提前致謝!

P粉176203781
P粉176203781

全部回覆 (1)
P粉421119778

在這種情況下,我建議使用Elasticsearch-PHP客戶端。

請使用composer安裝適當的客戶端。

對於以下的符合查詢

curl -XGET 'localhost:9200/my_index/_search' -d '{ "query" : { "match" : { "testField" : "abc" } } }'

您可以在您的PHP腳本中進行查詢,如下所示

$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'testField' => 'abc' ] ] ] ]; $results = $client->search($params);

這裡查看更多操作。

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!