重新翻譯為:"PHP語法的ElasticSearch"
P粉176203781
P粉176203781 2023-08-28 15:43:18
0
1
531
<p>我是ElasticSearch的新手,對查詢的工作原理不太了解... 我的索引範例</p>
{
  “_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,
    “_用戶” :[ ]
  }
}</pre>

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

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

            回傳$結果;
        }
        捕獲(異常$e){
            拋出新的例外( $e->getMessage() );
        }
    }</pre>
<p>將其轉換為 SQL 應該是這樣的:<code>SELECT * FROM 'indexing001' WHERE (content.title LIKE %search% OR content.short_text LIKE %search%) AND (users.id = 1 OR使用者= '')</code>
如何在ElasticSearch查詢中編寫它?
提前致謝!</p>            
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學習者快速成長!