2023-12-04 分類: 網站建設
1.match
查詢語法如下:title是需要查詢的字段名,可以被替換成任何字段。query對應的是所需的查詢。比如這里會被拆分成‘php’和‘后臺’,因為operator是or,所以ES會去所有數據里的title字段查詢包含‘后臺’和‘php’的,如果operator為and,這查詢的是即包含‘后臺’又有‘php’的數據,這應該很好理解。
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'match' => [ 'title' => [ 'query' => '后臺php', 'operator' => 'or', ] ] ] ]]);
2.multi_match
如果想在多個字段中查找,那就需要用到multi_match查詢,語法如下:
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'multi_match' => [ 'query' => '張三 php', 'fields' => ['title', 'desc', 'user'] ] ] ]]);
3.query_string
查詢語法如下:類似match查詢的operator,在這里需要在query中用OR或AND實現。
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'query_string' => [ 'query' => '(張三) OR (php)', 'default_field' => 'title', ] ] ]]);
多字段查詢如下:
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'query_string' => [ 'query' => '(張三) OR (php)', 'fields' => ['title', 'user'], ] ] ]]);
4.range query
這是范圍查詢,例如查詢年齡在10到20歲之間的。查詢語法如下:
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'range' => [ 'age' => [ 'gte' => 10, 'lte' => 20, ], ] ] ]]);
注:gte表示>=,lte表示<=,gt表示>,lt表示<。
5.bool查詢
bool查詢的語法都是一樣的。如下:
$response = $client->get('localhost:9200/accounts/person/_search', [ 'json' => [ 'query' => [ 'bool' => [ 'must/filter/should/must_not' => [ [ 'query_string' => [ 'query' => '研發', ] ], [ 'range' => [ 'age' => [ 'gt' => 20 ] ] ], ], ] ] ]]);
當前文章:ES的查詢關鍵詞解釋
當前鏈接:http://m.newbst.com/news6/298606.html
成都網站建設公司_創新互聯,為您提供外貿建站、動態網站、網站收錄、標簽優化、Google、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容