首页 >

PHP Elasticsearch的基本使用方法

后端开发|php教程PHP Elasticsearch的基本使用方法
Elasticsearch,使用方法,php
后端开发-php教程
对于Elasticsearch与Elasticsearch-php的安装,网上有比较多的教学,这里不再累述。只是要注意Elasticsearch、Elasticsearch-php与php的版本。这里笔者使用的是Elasticsearch 5.6.8 windows版、php 5.6 、php onethink框架(以下简称ot)、Elasticsearch-php composer如下:(PHP Composer 视频教学)
金币充值源码,ubuntu分区方案gpt,爬虫在数据挖掘,php 220,延时加载seolzw
{      "require":{          "elasticsearch/elasticsearch" : "~5.0"      }  }

A、连接Elasticsearch:

activiti源码下载,vscode是完全开源吗,ubuntu su 乱码,tomcat9.0.39漏洞,Python防止爬虫,php 类调用自己的方法,海珠seo关键词优化价格lzw
1、Elasticsearch开启之后,可以直接通过http://127.0.0.1:9200/查看基本信息。
zfb源码,vscode视屏教程,ubuntu swt,tomcat 卸载war,sqlite创建自增表,织梦心情投票插件,前端如何设计自己的应用框架,美团外卖爬虫数据多少,php 物理路径,阳曲seo优化收费,优秀旅游网站设计模板,易语言读网页html,微擎模板消息群发lzw
2、将composer vendor下的文件复制到ot ThinkPHP\Library\Vendor\elasticsearch目录下。

3、连接Elasticsearch,

    public $es;    /**     * 初始化     */    public function _initialize()    {        Vendor('elasticsearch.autoload');        //host数组可配置多个节点        $params = array(            '127.0.0.1:9200'        );        $this->es = \Elasticsearch\ClientBuilder::create()->setHosts($params)->build();    }

其中build()方法会将ClientBuilder 对象转换为一个Client对象。

B、Elasticsearch-php使用:

1、创建index:

关于index与type,这里特别纠正一个说法,index 就像关系型数据库里的 database, type 就像 database 里的 table,这种理解是错误的。

    /**     * 创建索引     */    public function createIndex(){        $params = [            'index' => 'test', //索引名称            'body' => ['settings'=> [ //配置    'number_of_shards'=> 3,//主分片数    'number_of_replicas'=> 1 //主分片的副本数],'mappings'=> [  //映射    '_default_' => [ //默认配置,每个类型缺省的配置使用默认配置        '_all'=>[   //  关闭所有字段的检索            'enabled' => 'false'        ],        '_source'=>[   //  存储原始文档            'enabled' => 'true'        ],        'properties'=> [ //配置数据结构与类型            'name'=> [ //字段1'type'=>'string',//类型 string、integer、float、double、boolean、date'index'=> 'analyzed',//索引是否精确值  analyzed not_analyzed            ],            'age'=> [ //字段2'type'=>'integer',            ],            'sex'=> [ //字段3'type'=>'string','index'=> 'not_analyzed',             ],        ]    ],    'my_type' => [         'properties' => [            'phone'=> [ 'type'=>'string',            ],                    ]    ],],            ]        ];        $res = $this->es->indices()->create($params);    }

在使用Elasticsearch-php API的时候,参数$params一般是用数组来,因为数组结构能很方便的转换为json。其中

_default_是默认配置,其他配置的缺省值都与_default_的相同。

_all设置true会将所有原始文档拼接在一起额外存储,

_source设置为true会存储原始文档,设置false一般用在只需要索引出文档的标题或者Url,通过Url去访问文档,而不需要在es中保存一份文档内容的场景。

最后,注意同一index下不同type中的同名称字段的数据类型与配置也必须相同!

2、删除index:

    /**     * 删除索引     */     public function deleteIndex(){        $params = [            'index' => 'test'        ];        $res = $this->es->indices()->delete($params);     }

3、查看Mappings:

    public function getMappings(){        $params = [            'index' => 'test'        ];        $res = $this->es->indices()->getMapping($params);    }

4、修改Mappings:

    public function putMappings(){        $params = [                       'index' => 'test',            'type' => 'my_type',            'body' => ['my_type' => [    'properties' => [        'idcard' => [            'type' => 'integer'        ]    ]]            ]        ];         $res = $this->es->indices()->putMapping($params);          }

注意:修改Mappings的API必须要指明type,且只能添加,不能修改已有的属性。

5、插入单条 Document:

    public function postSinDoc(){        $params = [            'index' => 'test',            'type' => 'my_type',            'body' => [ 'age' => 17,'name' => 'saki','sex' => '女性','idcard' => 1112,'phone' => '1245789',            ]        ];        $res = $this->es->index($params);    }

6、插入多条 Document:

    public function postBulkDoc(){        for($i = 0; $i  [    '_index' => 'test',    '_type' => 'my_type',]            ];            $params['body'][] = ['age' => 17+$i,'name' => 'reimu'.$i,'sex' => '女性','idcard' => 1112+$i,'phone' => '1245789'.$i,            ];        }        $res = $this->es->bulk($params);    }

7、通过id获取Document:

    public function getDocById(){        $params = [            'index' => 'test',            'type' => 'my_type',            'id' => 'AWIDV5l2A907wJBVKu6k'        ];        $res = $this->es->get($params);    }

8、通过id更新Document:

    public function updateDocById(){        $params = [            'index' => 'test',            'type' => 'my_type',            'id' => 'AWIDV5l2A907wJBVKu6k',            'body' => ['doc' => [ //将doc中的文档与现有文档合并    'name' => 'marisa']            ]        ];        $res = $this->es->update($params);    }

9、通过id删除Document:

    public function deleteDocById(){        $params = [            'index' => 'test',            'type' => 'my_type',            'id' => 'AWIDV5l2A907wJBVKu6k'        ];        $res = $this->es->delete($params);    }

注意:以上通过id的三个操作,如果未找到id,Elasticsearch-php会直接报错!

10、搜索Document:

    public function searchDoc(){        $params = [            'index' => 'test',            'type' => 'my_type',            'body' => ['query' => [    'constant_score' => [ //非评分模式执行        'filter' => [ //过滤器,不会计算相关度,速度快            'term' => [ //精确查找,不支持多个条件'name' => 'reimu0'            ]        ]            ]]            ]        ];        $res = $this->es->search($params);

这里只是搜索的一个示例。

实例详解MySQL 与 Elasticsearch 数据不对称问题

Elasticsearch是什么?Elasticsearch 能够被用在什么地方?

Elasticsearch索引和文档操作实例教学


PHP Elasticsearch的基本使用方法
  • 详解解读JavaScript中|单竖杠运算符的使用方法(图文教程)
  • 详解解读JavaScript中|单竖杠运算符的使用方法(图文教程) | 详解解读JavaScript中|单竖杠运算符的使用方法(图文教程) ...

    PHP Elasticsearch的基本使用方法
  • subtotal函数的使用方法1-9分别什么意思
  • subtotal函数的使用方法1-9分别什么意思 | subtotal函数的使用方法1-9分别什么意思 ...

    PHP Elasticsearch的基本使用方法
  • H5新增标签与属性使用方法归纳
  • H5新增标签与属性使用方法归纳 | H5新增标签与属性使用方法归纳 ...