当前位置: 首页 > news >正文

做电商网站的流程注册企业视频号

做电商网站的流程,注册企业视频号,民治做网站联系电话,移动互联网的主要特点在Thinkphp中调用ES,如果自己手写json格式的query肯定是很麻烦的。我这里使用的是ONGR ElasticsearchDSL 构建 ES 查询。ongr ElasticsearchDSL 的开源项目地址:GitHub - ongr-io/ElasticsearchDSL: Query DSL library for Elasticsearch。ONGR Elastics…

在Thinkphp中调用ES,如果自己手写json格式的query肯定是很麻烦的。我这里使用的是ONGR ElasticsearchDSL 构建 ES 查询。ongr ElasticsearchDSL 的开源项目地址:GitHub - ongr-io/ElasticsearchDSL: Query DSL library for Elasticsearch。ONGR ElasticsearchDSL 提供了一种更灵活、更易于维护的 Elasticsearch 查询构建方式,将复杂的 API 操作抽象为简洁的 DSL 语法。本文将深入探讨如何利用 ONGR ElasticsearchDSL 库构建 ES 查询,并实现高效、灵活的数据检索。

安装 ONGR ElasticsearchDSL 库:

安装前要先确认自己的ES版本,一定要选择ES对应的ElasticsearchDSL 库,对应版本列表如下:

我们使用composer安装,在自己的thinkphp项目目录下修改composer.json添加对应的ElasticsearchDSL 库版本,然后执行composer命令安装:

composer require ongr/elasticsearch-dsl

安装完成后就是在thinkphp项目中使用ElasticsearchDSL 了,示例代码:

 //根据需要引入对应的包
//引入bool查询
use ONGR\ElasticsearchDSL\Query\Compound\BoolQuery;
//引入match查询
use ONGR\ElasticsearchDSL\Query\FullText\MatchQuery;
//引入matchphrase查询
use ONGR\ElasticsearchDSL\Query\FullText\MatchPhraseQuery;
//引入term条件查询
use ONGR\ElasticsearchDSL\Query\TermLevel\TermQuery;
//引入多个term条件查询
use ONGR\ElasticsearchDSL\Query\TermLevel\TermsQuery;
//引入range查询
use ONGR\ElasticsearchDSL\Query\TermLevel\RangeQuery;
//引入wildcard查询
use ONGR\ElasticsearchDSL\Query\TermLevel\WildcardQuery;
//引入Search构建搜索
use ONGR\ElasticsearchDSL\Search;
//引入排序字段
use ONGR\ElasticsearchDSL\Sort\FieldSort;//首先创建一个ES搜索实例
$hosts = [['host' => '127.0.0.1', // 必填项'port' => 9200, // 不设置,默认9200,'scheme' => 'http', // 不设置, 默认http'user' => 'elastic','pass' => '123456'
]];
$esClient = ClientBuilder::create()->setHosts($hosts)->build();
//构建一个bool查询
$boolQuery = new BoolQuery();
//构建一个MatchPhrase查询,比如搜索title字段含“大模型”的条件
$matchPhraseQuery = new MatchPhraseQuery('title',"大模型",['analyzer'=>'ik_smart']);//这里使用了ik_smart分词器
//将这个条件加入到搜索中
$boolQuery->add($matchPhraseQuery, 'must');
$search->addQuery($boolQuery); 
//如果要加filter限制条件 可以使用addPostFilter
//比如加上时间范围限制,创建一个RangeQuery
$lasttime = time()-86400;//24小时前
$filterQuery = new BoolQuery();
$rangeQuery = new RangeQuery('addtime',['gte' => $lasttime]);
$filterQuery->add($rangeQuery, 'must');
//对应search修改为:
$search->addQuery($boolQuery)->addPostFilter($filterQuery); 
//添加排序条件
$sortFields = ['date','_score'];//按时间和评分排序
for($sortFields as $sortField){$fieldSort = new FieldSort($sortField, null, ['order' => FieldSort::DESC])$search->addSort($fieldSort);
}
//设置分页条件
$search->setFrom(($current_page-1)*$pagesize);
$search->setSize($pagesize);
//构建查询query
$query = ['index' => $indx_name, //对应的ES索引名称'body' => $search->toArray(),
];
//执行查询
$response = $esClient->search($query);
//返回结果集
if ($response['timed_out'] == false) {//转换结果集合$collection = new Collection(array_column($response['hits']['hits'],'_source'));$total = $response['hits']['total']['value'];
}

上面代码主要使用 BoolQuery 构建了多条件查询,使用 ONGR ElasticsearchDSL 库构建 ES 查询 更易于阅读和修改,提高代码可维护性。

文章地址 :Thinkphp使用ElasticsearchES查询 – AI小站 (aisites.cn)

http://www.yayakq.cn/news/42878/

相关文章:

  • 潍坊专业网站制作公司营销咸阳哪里做网站
  • 网站源码在线查看前端写一个页面多少钱
  • 一个空间放多个网站门户网站建设经验交流
  • 汕头网站制作公司衡阳电商网站建设
  • 做pc网站排名软文写作范文
  • 天津特定网站建设推广自己怎么优化关键词
  • 网站设计公司 知道万维科技易名网
  • 东风地区网站建设小红书关键词热度查询
  • 北京网站设计公司哪儿济南兴田德润简介wordpress 邮件代码
  • 江苏建设一体化平台网站seo博客优化
  • 南昌网站定制做西点网站
  • 保定网站seo费用logo免费生成网站
  • 网站内页收录突然没了2233网页游戏大全
  • 烟台网站title优化免费的素材库图片
  • wordpress仿站容易被收录不wordpress调用jssdk接口
  • 深圳做网站网络公司wordpress弹窗注册
  • 手游游戏源码资源网做网站需要做优化吗
  • 网站手机验证码注册怎么做wordpress建双语网站
  • 网站开发报价单网页设计与制作教程基础知识
  • 长春网站优化方式创新的做网站
  • wordpress网站速度时快时慢做网站太麻烦了
  • 有做敦煌网站的吗做面料要建议网站
  • 卖链接的网站win7局域网网站开发
  • 做公司网站建设价格邯郸seo优化公司
  • 外贸专业网站的公司好商网
  • 很多网站没有后台网络服务费要交印花税吗
  • iphone网站景翔物流网站建设公司
  • 上海创新网站建设如何做网站左侧导航条
  • 沈阳建站模板源码苏州做网站公司电话
  • 浦东高端网站开发贵阳网站制作计划