国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

elasticsearch 簡單使用【php版本】

這篇具有很好參考價值的文章主要介紹了elasticsearch 簡單使用【php版本】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

版本說明

  • 本文是在es8.4.1下進行操作,同時已經(jīng)安裝了ik分詞器。
  • php操作es的庫為?elasticsearch-php,github地址為:
    GitHub - elastic/elasticsearch-php: Official PHP client for Elasticsearch.
  • 所有的操作都基于本地服務器進行,本地安裝時關(guān)閉了安全驗證
  • index為goods,mapping結(jié)構(gòu)如下:
{
  "goods": {
    "mappings": {
      "properties": {
        "brand": {
          "type": "keyword"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "id": {
          "type": "integer"
        },
        "sort": {
          "type": "integer"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_smart"
        }
      }
    }
  }
}
  • 進行操作時,新建es對象
use Elastic\Elasticsearch\ClientBuilder;
$client = ClientBuilder::create() ->setHosts(['localhost:9200']) ->build();

一些查詢操作

我們使用es的情景大部分都是查詢,下面列舉一些常用的操作場景以及對應的代碼

獲取mapping結(jié)構(gòu)

$response = $client->indices()->getMapping(['index'=>'goods_bak']);

批量批量插入數(shù)據(jù)

//$count 為從數(shù)據(jù)庫中取的總數(shù),$result為對應的結(jié)果集
for($i = 0; $i < $count; $i++) {
    $add_params['body'][] = [
        'index' => [
            '_index' => "goods",
            '_id' => ($i+1) . ""
        ],
    ];
    $add_params['body'][] = [
        'id' => $result[$i][0] + 1,
        'title' => $result[$i][1],
        'content' => $result[$i][2],
        'sort' => $result[$i][3],
        'brand' => $result[$i][4],
    ];
}
$responses = $client->bulk($add_params);

刪除文檔數(shù)據(jù)

$delete_params = [
    'index' => 'goods',
    'body' => [
        'query' => [
            'range' => [
                'id' => [
                	//刪除id > 1的文檔記錄
                    'gte' =>1
                ]
            ]
        ]

    ]
];
$responses = $client->deleteByQuery($delete_params);

查詢title中包含關(guān)鍵詞懶蟲的文檔記錄

// match 會對查詢的關(guān)鍵詞進行分詞,term不會。例如查詢?nèi)A為手機,match會查詢title中包含華為或者手機或者華為手機的,term不會對查詢的關(guān)鍵詞做拆分
//不支持對多個字段進行同時查詢
//es默認返回10條記錄,可以用from(偏移量)和size(pagesize)進行分頁
$params = [
    'index' => 'goods',
    'body'  => [
        'query' => [
            'term' => [
//            'match' => [
                'title' => '懶蟲天鵝'
            ]
        ]
    ],
    'from' => 0, //分頁的位置
    'size' => 20 //返回多少條
];

$response = $client->search($params)->asArray();

模糊查詢之wildcard、前綴查詢

$params = [
    'index' => 'goods',
    'body'  => [
        'query' => [
        //wildcard會對查詢條件進行分詞,后面可以接* ? 通配符進行匹配
        // prefix前綴匹配,匹配到分詞中以設(shè)置的關(guān)鍵詞開頭的分詞
//            'wildcard' => [
            'prefix' => [
                'brand' => '星'
            ]
        ]
    ],
    'from' => 0,
    'size' => 20
];

范圍查詢

$params = [
    'index' => 'goods',
    'body'  => [
        'query' => [
            'range' => [
                'sort' => [
                    'gte' => 10,
                    'lte' => 100,
                ]
            ]
        ]
    ],
    'from' => 0,
    'size' => 20
];

bool查詢

//bool查詢,多個條件共同成立,有四種選擇,must(計算得分,性能較低) filter(過濾條件,不計算得分,性能高),must_not(條件必須不成立),should(條件可以成立)

//查詢title包含懶蟲且brand中含有華為的文檔記錄
$params = [
    'index' => 'goods',
    'body'  => [
        'query'=>[
            'bool' => [
                'filter' => [
                    //多個篩選條件時,每個term是數(shù)組形式
                    ['term' => ['title' => '懶蟲',]],
                    ['term' => ['brand' =>'華為',]]
                ]
            ]
        ]
    ],
    'from' => 0,
    'size' => 30
];

多個字段不同關(guān)鍵詞查詢的并集操作

$params = [
    'index' => 'goods',
    'body'  => [
        'query'=>[
        	//查詢title包含懶蟲或者brand包含華為的文檔記錄
            'dis_max' => [
                'queries' => [
                    //多個篩選條件時,每個term是數(shù)組形式
                    ['term' => ['title' => '懶蟲',]],
                    ['term' => ['brand' =>'華為',]]
                ]
            ]
        ],
        //對結(jié)果進行聚合操作
        'aggs' => [
            //最大得分的記錄,返回的結(jié)果字段為max_sort
            'max_sort' => [
                'max' => ['field' => 'sort']
            ],
            //對查詢結(jié)果按brand進行聚合匯總,取出前size條記錄
            'goods_brand_rank' => [
                'terms' => [
                    'field' => 'brand',
                    'size' => 10
                ]
            ]
        ],
        //對結(jié)果進行高亮顯示
        'highlight' => [
        	//這里定義高亮顯示的字段以及高亮顯示的tag,前端拿到tag后進行處理
            'fields' => [
                'title' => [
                    'pre_tags' => '<font color="red">',
                    'post_tags' => '</font>',
                ]
            ]
        ]
    ],
    'from' => 0,
    'size' => 30
];

?文章來源地址http://www.zghlxwxcb.cn/news/detail-410337.html

到了這里,關(guān)于elasticsearch 簡單使用【php版本】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • php使用ElasticSearch

    php使用ElasticSearch

    Elasticsearch 是一個 分布式 的、開源的 搜索分析引擎 ,支持各種數(shù)據(jù)類型,包括文本、數(shù)字、地理、結(jié)構(gòu)化、非結(jié)構(gòu)化。 Apache Lucene是一款高性能的、可擴展的信息檢索(IR)工具庫,是由Java語言開發(fā)的成熟、自由開源的搜索類庫,基于Apache協(xié)議授權(quán)。Lucene只是一個軟件類庫

    2024年03月22日
    瀏覽(18)
  • Git的簡單使用說明

    Git的簡單使用說明

    git的最主要的作用:版本控制,協(xié)助開發(fā) ?? 1.本地版本控制 ?? ?2.集中版本控制 ?? ?所有的版本數(shù)據(jù)都存在服務器上,用戶的本地只有自己以前所同步的版本,如果不連網(wǎng)的話,用戶就看不到歷史版本,也無法切換版本驗證問題 ,或在不同分支工作。而且,所有數(shù)據(jù)

    2024年01月22日
    瀏覽(17)
  • Serial Studio簡單使用說明

    Serial Studio簡單使用說明

    Serial Studio是一個跨平臺的軟件,支持將串口,TCP/UDP,MQTT等協(xié)議傳輸數(shù)據(jù),并將數(shù)據(jù)可視化顯示,方便嵌入式開發(fā)人員實現(xiàn)數(shù)據(jù)的可視化展示,呈現(xiàn)和分析其項目和設(shè)備生成的數(shù)據(jù),而無需為每個項目編寫專門的上位機軟件,僅需做json配置即可快速啟動上位機展示界面。 S

    2024年02月09日
    瀏覽(18)
  • Elasticsearch常用接口使用說明以及postman調(diào)用調(diào)試

    Elasticsearch常用接口使用說明以及postman調(diào)用調(diào)試

    接口url:http://xxxx:9200/_cat ? http://xxxx:9200/_cat/indices?v ? http://xxxx:9200/test-20230526?pretty 返回值 { ???? \\\"acknowledged\\\" :? true , ???? \\\"shards_acknowledged\\\" :? true , ???? \\\"index\\\" :? \\\"test-20230526\\\" } ? http://xxxx:9200/seatunnel-20230526/_search?q=*pretty ? http://xxxx:9200/_bulk 類型:POST Header: Content-Type ?

    2024年02月07日
    瀏覽(22)
  • Vue-計算屬性(computed)簡單說明和使用

    Vue-計算屬性(computed)簡單說明和使用

    學習vue的計算屬性之前,我們先寫一個案例,我們先用插值語法實現(xiàn),然后再使用vue的計算屬性實現(xiàn),經(jīng)過對比,我們就能掌握計算屬性的精髓和原理 寫一個簡單的例子,姓和名分別用兩個輸入框控制,最后通過一個span標簽拼接成一個全名 首先通過簡單的插值語法實現(xiàn),需

    2024年01月16日
    瀏覽(15)
  • PHP 如何使用 Elasticsearch 的 索引 API 接口

    PHP 如何使用 Elasticsearch 的 索引 API 接口

    目錄 一、實戰(zhàn)場景 二、知識點 PHP Elasticsearch 索引 index MySQL 三、菜鳥實戰(zhàn) 如何在 PHP 中使用 Elasticsearch 的索引 API 接口 PHP Elasticsearch 索引 index MySQL Elasticsearch 本質(zhì)上是一個數(shù)據(jù)庫,但并不是 MySQL 這種關(guān)系型數(shù)據(jù)庫,查詢語言也不是 SQL,而是 Elasticsearch 自己的一套查詢語言。

    2024年02月13日
    瀏覽(18)
  • Elasticsearch本地單機配置以及php組件使用記錄

    ?鍵值對模式 info 方法 $client-info();

    2024年01月17日
    瀏覽(39)
  • Spark 部署與應用程序交互簡單使用說明

    Spark 部署與應用程序交互簡單使用說明

    本文將講解 Spark 的部署,并通過三個簡單的步驟來編寫一個獨立應用程序。 我們將使用本地模式,其中所有的處理都是在Spark shell中的一臺機器上完成的——這是學習框架的一種簡單方法,迭代執(zhí)行的方式可以及時反饋直接結(jié)果。使用Spark shell,可以在編寫復雜的Spark應用程

    2024年04月12日
    瀏覽(19)
  • 使用PHP和Redis實現(xiàn)簡單秒殺功能

    安裝Redis 首先,需要在服務器上安裝Redis。如果使用Linux系統(tǒng),可以使用命令行安裝。如果使用Windows系統(tǒng),可以下載并安裝Redis二進制文件。 創(chuàng)建Redis連接 在PHP中,可以使用Redis擴展來連接Redis服務器。需要在PHP文件中包含Redis擴展,并創(chuàng)建一個Redis連接對象。 創(chuàng)建秒殺商品 在

    2024年02月14日
    瀏覽(15)
  • 【數(shù)據(jù)結(jié)構(gòu)】C--順序表1.0版本(本文非常適合小白觀看,已盡力詳解,以及圖解也是盡量列舉)

    【數(shù)據(jù)結(jié)構(gòu)】C--順序表1.0版本(本文非常適合小白觀看,已盡力詳解,以及圖解也是盡量列舉)

    目錄 0.前言 什么是數(shù)據(jù)結(jié)構(gòu)? 1.邏輯結(jié)構(gòu): 1.1線性結(jié)構(gòu): 1.2非線性結(jié)構(gòu): ????????(1)集合 ????????(2)樹形結(jié)構(gòu) ????????(3)圖形結(jié)構(gòu)或者網(wǎng)狀結(jié)構(gòu) 2.存儲結(jié)構(gòu) 一.線性表 二.順序表 順序表與數(shù)組的關(guān)系:(非常容易混淆) 1.靜態(tài)順序表:使用定長數(shù)組存儲元素 2.動態(tài)順序表

    2024年02月06日
    瀏覽(41)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包