专栏首页热爱IT初窥 Elasticsearch-PHP [1.0]

初窥 Elasticsearch-PHP [1.0]

初始化


Elasticsearch-PHP 下载地址:http://www.thinkphp.cn/code/download/id/1290.html 教程以ThinkPHP为例

下载Elasticsearch-PHP文件放在ThinkPHP\Library\Vendor\

    Vendor('Elasticsearch.autoload');
    $params['hosts'] = array(
        '127.0.0.1:9200'
    );
    $this->client = new \Elasticsearch\Client($params);

如果不给hosts参数也是可以的,默认为localhost:9200

索引

创建一个索引


  • 自增ID public function create_index(){ $indexParams['index'] = 'my_index'; $indexParams['type'] = 'my_index'; $indexParams['body']['settings']['number_of_shards'] = 2; $indexParams['body']['settings']['number_of_replicas'] = 0; $this->client->create($indexParams); }
  • 使用自己的ID 只要再添加一个id字段即可。例: $indexParams['id'] = '123';

删除索引


public function delete_index(){
    $deleteParams['index'] = 'my_index';

    $ret = $this->client->indices()->delete($deleteParams);
    dump($ret);
}

文档


public function add_document(){
    $params = array();
    $params['body'] = array(
        'testField' => 'dfdsfdsf',
        'ok' => '1  '
    );
    $params['index'] = 'my_index2';
    $params['type'] = 'my_index2';
    $params['id'] = '222';

    $ret = $this->client->index($params);

    dump($ret);
}


  • 根据id、index、type来查询(一条数据,精确查询) public function get_document(){ $getParams = array(); $getParams['index'] = 'my_index'; $getParams['type'] = 'my_index'; $getParams['id'] = 'w1231313'; $retDoc = $this->client->get($getParams); dump($retDoc); }
  • 模糊查询 public function search_(){ $searchParams = array(); $searchParams['body'] = array( 'query' => array( 'match' => array( 'testField' => 'dfdsfdsf' ) ) ); $retDoc = $this->client->search($searchParams); dump($retDoc); }
  • 检查文档是否存在 public function exists(){ $getParams = array( 'index' => 'my_index', 'type' => 'my_index', 'id' => 'w1231313' ); $exists = $this->client->exists($getParams); dump($exists); }


    public function update_document(){
        $updateParams = array();
        $updateParams['index'] = 'my_index';
        $updateParams['type'] = 'my_index';
        $updateParams['id'] = 'w1231313';
        $updateParams['body']['doc']['testField']  = 'xxxx';

        $response = $this->client->update($updateParams);
        dump($response);
    }


    public function delete_document(){
        $deleteParams = array();
        $deleteParams['index'] = 'my_index';
        $deleteParams['type'] = 'my_index';
        $deleteParams['id'] = 'w1231313';

        $retDelete = $this->client->delete($deleteParams);
        dump($retDelete);
    }

搜索

  • 空查询 public function search(){ $retDoc = $this->client->search(); dump($retDoc); } 当然可以加上其他的一些条件,例如: $searchParams['index'] = 'my_index'; $searchParams['type'] = 'my_index';
  • 查询与过滤

term : 相当于模糊查询 match : 相当于精确查询

    public function test111(){
        $params['index'] = 'my_index';
        $params['type']  = 'my_index';

        $filter = array();
        $filter['term']['my_field'] = 'abc';

        $query = array();
        $query['match']['my_other_field'] = 'xyz';

        $params['body']['query']['filtered'] = array(
            "filter" => $filter,
            "query"  => $query
        );

        $results = $this->client->search($params);
        dump($results);
    }
  • 分页

from : 跳过开始的结果数,默认0 size: 结果数,默认为10

    public function search(){
        $searchParams['index'] = 'my_index';
        $searchParams['type'] = 'my_index';
        $searchParams['from'] = 0;
        $searchParams['size'] = 100;
        
        $retDoc = $this->client->search($searchParams);
        dump($retDoc);
    }
  • 布尔查询

must : 多个查询条件的完全匹配,相当于 and。 must_not : 多个查询条件的相反匹配,相当于 not。 should : 至少有一个查询条件匹配, 相当于 or。

    public function boolquery(){
        $params['index'] = 'my_index';
        $params['type']  = 'my_index';
        $params['body']['query']['bool']['must'] = array(
            array('match' => array('testField' => 'abc')),
            array('match' => array('anotherTestField' => 'xyz')),
        );

        $params['body']['query']['bool']['must_not'] = array(
            array('term' => array('testField' => 'abc'))
        );

        $results = $this->client->search($params);
        dump($results);
    }

END

大致的一些使用如上,若有疑问,女生请找我,男生自己看API。 传送门 es-API:http://es.xiaoleilu.com/054_Query_DSL/80_Validating_queries.html es-PHP-API:https://www.elastic.co/guide/en/elasticsearch/client/php-api/1.0/_search_operations.html

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php将多个值的数组去除重复元素 转

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人
  • 史上最全Python面向对象编程 转

    在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。每个函数都可以具有它们自己的局部数据,将某些功能代码封装到函数中,日后便无需重复...

    双面人
  • 【Python3之异常处理】 转

    程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

    双面人
  • 排查 Node.js 服务内存泄漏,没想到竟是它?

    团队最近将两个项目迁移至 degg 2.0 中,两个项目均出现比较严重的内存泄漏问题,此处以本人维护的埋点服务为例进行排查。服务上线后内存增长如下图,其中红框为...

    五月君
  • 循环中的异步&&循环中的闭包

    foo函数下的index输出5,全局下的index不存在 现在我们把var 换为let

    陌上寒
  • Python 将word与id之间相互转换的

    致Great
  • Python基础 | 快速实现label_to_index

    在做机器学习分类问题的时候,经常需要将标签名转换为对应的索引。什么是label_to_index问题?下面将通过一个案例来详细说明。

    算法与编程之美
  • KNN算法实现及其交叉验证

    简单的理解,我有一组数据,比如每个数据都是n维向量,那么我们可以在n维空间表示这个数据,这些数据都有对应的标签值,也就是我们感兴趣的预测变量。那么当我们接到一个...

    用户2183996
  • Leetcode#500. Keyboard Row(键盘行)

    给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

    武培轩
  • iOS音频播放器锁屏歌词显示与性能优化 原

        前边有博客探讨了有关iOS开发中音频播放的技术与进行后台音频播放并在后台与用户进行交互的方法,本篇将探讨一种在锁屏界面同步显示歌词歌词的方法,并在应用性...

    珲少

扫码关注云+社区

领取腾讯云代金券