elasticsearch-php工具类的编写
来源:互联网 发布:wifi网络连接不可用 编辑:程序博客网 时间:2024/06/03 14:20
es 5.4.0
ik 5.4.0
php 5.6
======================================
自己编写php的elasticsearch的增删改查的类:=》带有ik中文分词的功能
ik的安装文档:http://www.cnblogs.com/meiping/p/7423563.html
1、初始化客户端
require 'vendor/autoload.php';use Elasticsearch\ClientBuilder;$client = ClientBuilder::create()->build();
2、创建索引
$indexParams = [
'index' => $dbName, ## 索引:数据库
];
$client->indices()->create($indexParams);
3、设置全文检索的配置 mapping
// 准备好需要配置的字段和字段类型,用来配置mapping
$data = [
'title'=>'string', ## 字段title,字段类型string
'content'=>'text' ## 字段content,字段类型text
]
$indexParam =[
'index' => $dbName, ## 索引:数据库
'type' => $tbName, ## 类型:数据表
];
$mapParam = [];
foreach ($data as $field=>$field_type){
$mapParam[$field] = [
'type' => $field_type,
'analyzer' => 'ik_max_word',
'search_analyzer' => 'ik_max_word'
];
}
$indexParam['body'][$indexParam['type']]['properties'] = $mapParam;
$client->indices()->putMapping($indexParam);
4、添加数据
// 准备好添加的数据:
$data = [
'id'=>'1',
'title'=>'我是标题', ## 字段title,字段值
'content'=>'我是内容' ## 字段content,字段值
]
$params = [
'index' => $dbName, ## 索引:数据库
'type' => $tbName, ## 类型:数据表
];
if(array_key_exists('id', $data)){ ## 我把数据里的id取出来,做es的数据的唯一标识了,我觉得保持一致方便删除数据。
$params['id'] = $data['id'];
}
$params['body'] = $data;
$r = $client->index($params);
5、搜索数据:单个字段的根据关键词查询
// 准备好需要查询的条件
$data = [
'content'=>'中国'
];
$param = [
'index' => $dbName, ## 索引:数据库
'type' => $tbName, ## 类型:数据表
];
$query = [
'match'=>[
$field=>[
'query'=>$data[$field],
'minimum_should_match'=>'90%'
]
]
];
// 高亮
$highlight = [
'fields'=> [
$field=>[
'pre_tags'=>'<strong>',
'post_tags'=>'</strong>'
]
]
];
$params['body']['query'] = $query;
$params['body']['highlight'] = $highlight;
$r = $client->search($params);
6、多个词满足查询条件
// 准备好需要查询的条件
$data = [
'title,content'=>'中国' ## 自己设置的,多个关键词用了“,”隔开,查询关键词是“中国”
];
$params = [
'index' => $dbName, ## 索引:数据库
'type' => $tbName, ## 类型:数据表
];
$field = key($data);
$field_arr = explode(",", $field);
$query = [
'multi_match'=>[
'query' => $data[$field],
'type' => "best_fields", ## 我们希望完全匹配的文档占的评分比较高,则需要使用best_fields
'fields' => $field_arr,
'tie_breaker' => 0.3 ## 意思就是完全匹配"中国"的文档评分会比较靠前,如果只匹配中国的文档评分乘以0.3的系数,这方面的详细解答,请阅读:http://www.cnblogs.com/yjf512/p/4897294.html
]
];
// 高亮
$highlight = [];
foreach ($field_arr as $field){
$highlight['fields'][$field] = [
'pre_tags'=>'<strong>',
'post_tags'=>'</strong>'
];
}
$params['body']['query'] = $query;
$params['body']['highlight'] = $highlight;
$client->search($params);
7、根据唯一标识id删除数据
$params = [
'index' => $dbName, ## 索引:数据库
'type' => $tbName, ## 类型:数据表
];
$params['id'] = $id;
$r = $client->delete($params);
====================================
es-php官网:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html
阅读全文
0 0
- elasticsearch-php工具类的编写
- PHP ElasticSearch的使用
- PHP ElasticSearch的使用
- HibernateUtil工具类的编写
- 工具类的编写方式
- elasticsearch获取client工具类
- 24SharedPreferences的工具类的编写
- 自己编写的JDBC的工具类
- Elasticsearch(十一)elasticsearch搜索--最基本的工具
- 04网络请求工具类的编写
- JDBC:编写通用的 JDBCUtils工具类
- 编写连接数据库的工具类
- 编写一个数组的工具类
- JAVA编写数组的工具类
- HttpClientUtil 等各类工具类的编写
- :编写单元测试的工具
- 编写汇编语言的工具
- 翻译Elasticsearch的那些坑和工具
- maven打包时跳过测试
- spoj2666 Qtree4(类似于bzoj1095: [ZJOI2007]Hide 捉迷藏)详解
- MOOC清华《面向对象程序设计》第4章:自动类型转换实验
- PAT 甲级 1008. Elevator
- 单例设计模式
- elasticsearch-php工具类的编写
- Java/Android 设计模式系列(7)--装饰者模式
- 《一个Android工程的从零开始》阶段总结与修改2-Retrofit 上传JSON及尾址特殊字符转译问题
- PAT 甲级 1009. Product of Polynomials
- STL例题
- Triple Generative Adversarial Nets
- javaseday30补充(uri url urlconnection )
- bootstrap中button在data-toggle="##" data-target="xxx"没起作用的解决方法
- 95. Unique Binary Search Trees II