zoukankan      html  css  js  c++  java
  • [PHP] Elasticsearch 6.4.2 的安装和使用

    Elasticsearch 6.4.2 的安装和使用

    一、安装
    http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
    https://www.jianshu.com/p/add1f1d57241

    二、PHP连接
    1)客户端版本
    composer.json

    {
        "require": {
            "elasticsearch/elasticsearch": "~6.5.0"
        }
    }

    2)官方文档地址
    https://www.elastic.co/guide/en/elasticsearch/client/php-api/6.5.x/index.html

    三、基本概念

    index  相当于 数据库
    type  相当于 数据表
    document  相当于 一行数据
    id  document的唯一标识

    查询关键字:
    must  与
    must not 排除
    should  或

    must    查询内容必须出现在匹配的文档中,并将有助于得分;
    must_not    查询内容不能出现在匹配的文档中;
    filter    查询内容必须出现在匹配的文档中,是对匹配的结果过滤,在过滤器上下文中执行,意味着评分被忽略;
    should    查询内容应该出现在匹配的文档中,至少有一个;

    四、操作
    1)连接

    common.php

    <?php
    require 'vendor/autoload.php';
    
    $client = ElasticsearchClientBuilder::create()->setHosts(['192.168.1.3:9200'])->build();



    2)基本操作

    <?php
    
    require 'common.php';
    
    function add(){
        //插入数据
        $params = array(
                    'index' => 'website',
                    'type' => 'blog',
                    'id' => 7,
                    'body' => array(
                        'title' => '111ElasticSearch-PHP之使用二',
                        'content' => '有关于ElasticSearch在PHP下的扩展使用方法之谈',
                        'create_time' => '2016-11-18 08:00:00',
                    ),
                );
        global $client;
        $resp = $client->index($params);
    
        $params = array(
                    'index' => 'website',
                    'type' => 'blog',
                    'id' => 6,
                    'body' => array(
                        'title' => '222ElasticSearch-PHP之使用二',
                        'content' => '有关于ElasticSearch在PHP下的扩展使用方法之谈',
                        'create_time' => '2016-11-18 08:00:00',
                    ),
                );
                
        $res = $client->index($params);
    }
    
    function query(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'id' => 7,
        ];
        global $client;
        $res = $client->get($params);   //获取指定的文档
        $res = $client->getSource($params);   //获取指定的文档 数据
        print_r($res);
    }
    
    function del(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'id' => 7,
        ];
        global $client;
        $res = $client->delete($params);   //删除指定的文档
        print_r($res);
    }
    
    function update(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'id' => 6,
            'body' => [
                'doc' => [
                    'age' => 150
                ]
            ]
        ];
        global $client;
        $res = $client->update($params);   //更新指定的文档
        print_r($res);
    }
    
    
    function search(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'body' => [
                'query' => [
                    'match' => [
                        'age' => '150'
                    ]
                ],
                'from' => '0',
                'size' => '200',
                'sort' => [
                    'age' => 'desc'   //对age字段进行降序排序
                ]
            ]
        ];
        global $client;
        $res = $client->search($params);   //搜索 指定的文档
        print_r($res);
    }
    
    function index(){
        $params = [
            'index' => 'website',
            'client' => [
                'ignore' => 404
            ]
        ];
        global $client;
        //$res = $client->indices()->delete($params);    //删除库索引
        //$res = $client->indices()->getSettings($params);//获取库索引设置信息
        $res = $client->indices()->exists($params);   //检测库是否存在
        $res = $client->indices()->getMapping($params);   //获取mapping信息
        print_r($res);
    }
    
    //add();
     // query();
    //del();
    // update();
    // search();
    index();



    3)复杂查询


    <?php
    
    require 'common.php';
    
    
    //搜索某一字段
    function search1(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'body' => [
                'query' => [
                    'match' => [
                        'content' => '方法'
                    ]
                ],
                'from' => '0',
                'size' => '200'
            ]
        ];
        global $client;
        $res = $client->search($params);   //搜索 指定的文档
        print_r($res);
    }
    
    //搜索多个字段
    //query bool must 是 and 查询
    function search2(){
        $params = [
            'index' => 'website',
            'type' => 'blog',
            'body' => [
                'query' => [
                    'bool' => [
                        'must' => [
                            'match' => [
                                'title' => '666'
                            ],
                            'match' => [
                                'content' => '方法之谈'
                            ]
                        ]
                    ]
                ],
                'from' => '0',
                'size' => '200'
            ]
        ];
        global $client;
        $res = $client->search($params);   //搜索 指定的文档
        print_r($res);
    }
    
    
    //search1();
    search2();

    本博客地址: wukong1688

    本文原文地址:https://www.cnblogs.com/wukong1688/p/10977410.html

    转载请著名出处!谢谢~~

  • 相关阅读:
    feq ifneq ifdef ifndef
    clock gating | ODC-based Clock Gating
    clock gating | clock gating的timing check
    更换ICC2图形界面主题
    git 学习心得
    CSS颜色混合模式
    常用meta整理
    75份开发者、设计师必备的速查表
    jquery 编程的最佳实践
    JQuery总结一:选择器归纳
  • 原文地址:https://www.cnblogs.com/wukong1688/p/10977410.html
Copyright © 2011-2022 走看看