博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch在windows下的安装、配置和thinkphp使用记录(完整版)
阅读量:6006 次
发布时间:2019-06-20

本文共 2923 字,大约阅读时间需要 9 分钟。

hot3.png

1、安装elasticsearch-2.3.5、javaSE环境

从官网下载最新版,然后用cmd进入解压后的elasticsearch目录,直接用bin/elasticsearch.bat启动。(java环境已经配置好,网上有很多相关教程)。

访问 http://localhost:9200/  (成功后继续进行)

2、下载php环境,用composer 安装 elasticsearch-php

下载好后,将文件夹放入 thinkphp的vendor 下。

3、写thinkphp 的展现类,直接贴我的代码。

client = ClientBuilder::create()->build(); } public function index() { $post = I("get."); $searchParams['index'] = 'yunnan'; $searchParams['type'] = 'article'; $searchParams['sort'] = array( '_score' => array( 'order' => 'desc' ) ); $searchParams['body']['query'] = [ 'multi_match' => [ 'title' => $get['key'] 'content' => $get['key'] ] ]; $searchParams['body']['highlight'] = [ "fields" =>[ "title" => [ new \stdClass() ], "content" => [ new \stdClass() ] ] ]; $docs = $this->client->search($searchParams); // dump($docs); $count = $docs['hits']['total'];// 查询满足要求的总记录数 $Page = new \Think\Page($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(10) $show = $Page->show();// 分页显示输出 // 进行分页数据查询 注意limit方法的参数要使用Page类的属性 $searchParams['from'] = $Page->firstRow; $searchParams['size'] = $Page->listRows; $Page->parameter[$key] = $get['key'];//传url参数 $res = $this->client->search($searchParams); $list = $res['hits']['hits']; $this->assign('list',$list);// 赋值数据集 $this->assign('page',$show);// 赋值分页输出 $this->assign('count',$count); $this->display(); // 输出模板 // dump($list); } public function add($res) { $params = array(); $params['index'] = 'yunnan'; $params['type'] = 'article'; $params['id'] = $res['id']; unset($res['id']); unset($res['cid']); $params['body'] = $res; $ret = $this->client->index($params); } public function delete($ids) { $deleteParams = array(); $deleteParams['index'] = 'yunnan'; $deleteParams['type'] = 'article'; foreach ($ids as $key => $value) { $deleteParams['id'] = $value; $retDelete = $this->client->delete($deleteParams); } }}

这样在页面里面就可以实现title、content 的全文检索了,这里面有个坑,必须看完文档才能领会。

hightlight 用match的时候只能高亮最后一个,跟他的原理有关,具体可以认真学习英文原版。只有使用 multi_match 的时候才可以获取多个字段的高亮数组。

另外,thinkphp跨类调用的方法是 R方法,R('elastic/add',array($id))。

4、到这里实现了搜索的基本功能,但是你会发现中文搜索的话,分词有问题。因为他的字段配置都是内置的标准分词器,并不适合中文分词。

所以,接下来就必须要安装 ik 中文分词器。网上安装方法很多,我是直接在github上安装的,里面的教程写的很详细了,请去那里解决:)

安装好后,按照他的要求进行打包 mvn packge。这个需要安装maven,可百度安装方法。

然后进行 index索引配置 和分词字段的 单独配置。这里提箱一下,索引的配置不能更改,字段的配置是可以修改的,所以要慎重配置索引,例如分片等。

提示:可以利用 plugins-head 工具的复合查询进行 索引的创建,和字段 mapping的设置,比较方便。

get查询,post提交配置修改。

配置好后,就可以开始中文搜索的 旅程了。不过这只是 elasticsearch的刚刚开始,他的强大功能值得你去学习。

转载于:https://my.oschina.net/kosaskle/blog/737925

你可能感兴趣的文章
mysql 唯一索引与null.md
查看>>
TypeScript 接口
查看>>
Mysql源码学习——源码目录结构
查看>>
selinux第一节
查看>>
Kubernetes-在Kubernetes集群上搭建Solr集群
查看>>
轻松 get 报表模糊查询技能
查看>>
3. C语言 -- 叫你一声你敢答应嘛
查看>>
Android Handler机制(不含源码解析,适合新手理解)
查看>>
ios json转model的简单现实
查看>>
windows端部署python开发环境
查看>>
时隔一年,jQuery 发布 3.4.0 版本
查看>>
读懂这篇文章,你的阿里技术面就可以过关了 | Apache RocketMQ 101
查看>>
CentOS系统在不重启的情况下为虚拟机添加新硬盘
查看>>
JDBC连接ORACLE的三种URL格式
查看>>
MySQL使用教程收集(语法教程/命令教程)
查看>>
DDNS
查看>>
脚本化HTTP 取得响应 指定请求
查看>>
音乐文件基础知识
查看>>
JNA简介
查看>>
document.referrer的用法
查看>>