- 浏览: 2194757 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
package com.curd.es; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramBuilder; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval; import org.elasticsearch.search.aggregations.bucket.histogram.Histogram; import org.elasticsearch.search.aggregations.bucket.terms.StringTerms; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsBuilder; import org.joda.time.DateTime; import java.net.InetSocketAddress; import java.util.List; import java.util.Map; public class ElasticSearchToolsTest { //elasticsearch2.3的客户端实例 static Client client=null; static { //设置集群名字 Settings settings = Settings.settingsBuilder() .put("cluster.name", "search") .put("client.transport.sniff", true) . build(); try { //初始化连接客户端 client = new TransportClient.Builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.201.5",9300))) .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.201.6",9300))) .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("192.168.201.7",9300))); }catch (Exception e){ e.printStackTrace(); } } /**** * 测试读取仅仅索引没有存储的字段,从倒排里面加载数据 * 过滤数据 */ public static void filterQueryString(){ //构建查询请求 SearchRequestBuilder search=client.prepareSearch("monitor").setTypes("monitor"); BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() .must(QueryBuilders.queryStringQuery("*:*")) .filter(QueryBuilders.queryStringQuery("+mtitle:北京奇虎科技 +dtime:[1443196800000 TO 1451059200000] ").defaultOperator(Operator.AND)); search.setQuery(boolQuery); search.addFieldDataField("t1");//索引,没有存储的域,从field data里面加载数据 search.addFieldDataField("t2");//索引,没有存储的域,从field data里面加载数据 search.addFieldDataField("t3");//索引,没有存储的域,从field data里面加载数据 search.addFieldDataField("dtime");//索引,没有存储的域,从field data里面加载数据 SearchResponse r = search.get(); for(SearchHit hit:r.getHits()){ String id=hit.getId(); String index=hit.getIndex(); String type=hit.getType(); String t1=hit.getFields().get("t1").getValue(); String t2=hit.getFields().get("t2").getValue(); String t3=hit.getFields().get("t3").getValue(); Long time=hit.getFields().get("dtime").getValue(); Float score=hit.getScore(); System.out.println(id+"\t"+t1+"\t"+t2+"\t"+t3+"\t"+time+"\t"+score); } System.out.println("总数量:"+r.getHits().getTotalHits()); System.out.println("耗时:"+r.getTookInMillis()); } public static void main(String[] args) throws Exception { //单个聚合字段,支持.写法 String aggField="data.subjectId"; // testOneAggString(aggField); testFilter(); client.close(); } /*** * 获取search请求的结果,并输出打印结果信息 * @param search * @throws Exception */ public static void showResult(SearchRequestBuilder search) throws Exception{ SearchResponse r = search.get();//得到查询结果 for(SearchHit hits:r.getHits()){ //只能获取addFields里面添加的字段 // System.out.println(hits.getFields().get("userId").getValue()); //默认可会source里面获取所需字段 System.out.println(hits.getSource().get("actId")); //注意不支持data.subjectName这样的访问方式 //System.out.println(hits.getId()+" "+hits.score()+" "+data.get("subjectName")); //如果是个嵌套json,需要转成map后,访问其属性 // Map data=(Map) hits.getSource().get("data"); // System.out.println(hits.getId()+" "+hits.score()+" "+data.get("subjectName")); } long hits=r.getHits().getTotalHits();//读取命中数量 System.out.println(hits); } /*** * 每一天的select count(distinct(actid)) from talbe group by date */ public static void countDistinctByField(){ //构造search请求 SearchRequestBuilder search=client.prepareSearch("userlog*").setTypes("logs"); search.setQuery(QueryBuilders.queryStringQuery("@timestamp:[ "+new DateTime(2016, 8, 8, 0, 0, 0).getMillis() +" TO "+new DateTime(2016, 8, 15, 0, 0, 0).getMillis()+"}" )); search.setSize(0); //一级分组字段 DateHistogramBuilder dateagg = AggregationBuilders.dateHistogram("dateagg"); dateagg.field("@timestamp");//聚合时间字段 // dateagg.interval(DateHistogramInterval.HOUR);//按小时聚合 dateagg.interval(DateHistogramInterval.DAY);//按天聚合 // dateagg.format("yyyy-MM-dd HH"); //格式化时间 dateagg.format("yyyy-MM-dd"); //格式化时间 dateagg.timeZone("Asia/Shanghai");//设置时区,注意如果程序部署在其他国家使用时,使用Joda-Time来动态获取时区 new DateTime().getZone() //二级分组字段 // TermsBuilder twoAgg = AggregationBuilders.terms("stragg").field("actId"); MetricsAggregationBuilder twoAgg = AggregationBuilders.cardinality("stragg").field("actId"); //组装聚合字段 dateagg.subAggregation(twoAgg); //向search请求添加 search.addAggregation(dateagg); //获取结果 SearchResponse r = search.get(); Histogram h = r.getAggregations().get("dateagg"); //得到一级聚合结果里面的分桶集合 List<Histogram.Bucket> buckets = (List<Histogram.Bucket>) h.getBuckets(); //遍历分桶集 for(Histogram.Bucket b:buckets){ //读取二级聚合数据集引用 Aggregations sub = b.getAggregations(); //获取二级聚合集合 Cardinality agg = sub.get("stragg"); //获取去重后的值 long value = agg.getValue(); //如果设置日期的format的时候,需要使用keyAsString取出,否则获取的是UTC的标准时间 System.out.println(b.getKeyAsString() +" " +b.getDocCount()+" "+value); } } /*** * 最新版elasticsearch2.3的query测试,结果会评分 * @throws Exception */ public static void testQuery() throws Exception{ SearchRequestBuilder search=client.prepareSearch("userlog*").setTypes("logs"); String subjectName="语文"; //注意查询的时候,支持嵌套的json查询,通过点符号访问下层字段,读取结果时不支持这种方式 search.setQuery(QueryBuilders.queryStringQuery("+data.subjectName:* -data.subjectName:"+subjectName+" ")); showResult(search); } /*** * 最新版的elasticsearch2.3的filterquery测试,结果不会评分 * @throws Exception */ public static void testFilter() throws Exception{ SearchRequestBuilder search=client.prepareSearch("userlog*").setTypes("logs"); //第一个参数包含的字段数组,第二个字段排除的字段数组 // search.setFetchSource(new String[]{"userId","actId"},null); // search.addFields("actId","userId"); //另一种写法 String schoolName="沙河市第三小学"; BoolQueryBuilder boolQuery = QueryBuilders.boolQuery() .must(QueryBuilders.queryStringQuery("*:*")) .filter(QueryBuilders.queryStringQuery("+data.subjectName:* +schoolName:"+schoolName).defaultOperator(Operator.AND)); //设置query search.setQuery(boolQuery); //打印结果数据 showResult(search); } /*** * 两个字段分组测试,在时间的维度上加上任意其他的字段聚合,类似group by field1,field2 * @throws Exception */ public static void testTwoAggString() throws Exception{ //构造search请求 SearchRequestBuilder search=client.prepareSearch("userlog*").setTypes("logs"); search.setQuery(QueryBuilders.queryStringQuery("@timestamp:[ "+new DateTime(2016, 8, 10, 0, 0, 0).getMillis() +" TO "+new DateTime(2016, 8, 11, 0, 0, 0).getMillis()+"}" )); //一级分组字段 DateHistogramBuilder dateagg = AggregationBuilders.dateHistogram("dateagg"); dateagg.field("@timestamp");//聚合时间字段 dateagg.interval(DateHistogramInterval.HOUR);//按小时聚合 dateagg.format("yyyy-MM-dd HH"); //格式化时间 dateagg.timeZone("Asia/Shanghai");//设置时区,注意如果程序部署在其他国家使用时,使用Joda-Time来动态获取时区 new DateTime().getZone() //二级分组字段 TermsBuilder twoAgg = AggregationBuilders.terms("stragg").field("module"); //组装聚合字段 dateagg.subAggregation(twoAgg); //向search请求添加 search.addAggregation(dateagg); //获取结果 SearchResponse r = search.get(); Histogram h = r.getAggregations().get("dateagg"); //得到一级聚合结果里面的分桶集合 List<Histogram.Bucket> buckets = (List<Histogram.Bucket>) h.getBuckets(); //遍历分桶集 for(Histogram.Bucket b:buckets){ //读取二级聚合数据集引用 Aggregations sub = b.getAggregations(); //获取二级聚合集合 StringTerms count = sub.get("stragg"); //如果设置日期的format的时候,需要使用keyAsString取出,否则获取的是UTC的标准时间 System.out.println(b.getKeyAsString() +" " +b.getDocCount()); System.out.println("============================================="); for(Terms.Bucket bket:(List<Terms.Bucket>)count.getBuckets()){ System.out.println(bket.getKeyAsString() +" "+bket.getDocCount()); } System.out.println("************************************************"); } } /*** * 一个字段聚合,类似数据库的group by field1 * @param field 测试聚合的字段 * @throws Exception */ public static void testOneAggString(String field)throws Exception{ //构造search请求 SearchRequestBuilder search=client.prepareSearch("userlog*").setTypes("logs"); //查询昨天的数据 search.setQuery(QueryBuilders.queryStringQuery("@timestamp:[ "+new DateTime(2016, 8, 10, 0, 0, 0).getMillis() +" TO "+new DateTime(2016, 8, 11, 0, 0, 0).getMillis()+"}" )); //聚合构造 TermsBuilder termsBuilder = AggregationBuilders.terms("agg").field(field); //添加到search请求 search.addAggregation(termsBuilder); //获取结果 SearchResponse searchResponse = search.get(); //获取agg标识下面的结果 Terms agg1 = searchResponse.getAggregations().get("agg"); //获取bucket List<Terms.Bucket> buckets = (List<Terms.Bucket>) agg1.getBuckets(); long sum=0; for(Terms.Bucket b:buckets){ Aggregations sub = b.getAggregations(); System.out.println(b.getKeyAsString()+" "+b.getDocCount()); sum+=b.getDocCount(); } System.out.println("总数:"+sum); } }
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
发表评论
-
复盘一个Elasticsearch排序问题的剖析
2019-07-15 21:12 1217最近线上的es查询的 ... -
elasticsearch里面bulk的用法
2018-04-09 20:23 1437上篇文章介绍了在es里 ... -
elasticsearch里面的关于批量读取mget的用法
2018-04-04 16:01 1845es的api除了提供了基本 ... -
elasticsearch的查询流程分析
2018-04-02 20:29 1344我们都知道es是一个分 ... -
如何在elasticsearch里面使用深度分页功能
2018-03-28 18:13 2039前面的文章提到过es默认的from+size的分页方式返回的结 ... -
如何在Elasticsearch里面使用索引别名
2018-03-27 20:37 1692在elasticsearch里面给index起一个alias ... -
如何优雅的全量读取Elasticsearch索引里面的数据
2018-03-26 20:27 7666### (一)scroll的介绍 有时候我们可能想要读取整个 ... -
关于elaticsearch中更新数据的几种方式
2018-03-21 19:00 975作为一个成熟的框架, ... -
Elasticsearch里面的segment合并
2018-03-20 17:50 2113通过前面的文章,我 ... -
Elasticsearch如何保证数据不丢失?
2018-03-19 20:52 2154上篇文章提到过,在elasticsearch和磁盘之间还有一层 ... -
为什么说Elasticsearch搜索是近实时的?
2018-03-16 19:41 9496通过前面两篇文章的介绍,我们大概已经知道了 Elasticse ... -
Elasticsearch如何动态维护一个不可变的倒排索引
2018-03-15 21:34 1152上一篇文章中介绍了Elasticsearch中是如何搜索文本 ... -
Elasticsearch如何检索数据
2018-03-14 20:11 1118我们都知道Elasticsearch是一个全文检索引擎,那么它 ... -
如何备份ElasticSearch索引数据到HDFS上
2018-02-09 18:19 2440在ElasticSearch里面备份策略已经比较成熟了 ... -
Elasticsearch5.6.4集群搭建
2018-02-07 20:13 1349本次搭建的是一个三节点的集群 (一)es的安装 (1)下 ... -
如何使log4j生成json格式的log
2017-09-15 17:44 3860使用java开发项目时,log日志一般都是应用程序必不可少的一 ... -
理解elasticsearch的parent-child关系
2017-09-04 18:43 2853前面文章介绍了,在es里面的几种数据组织关系,包括array ... -
简述ElasticSearch里面复杂关系数据的存储方式
2017-08-18 20:10 2425在传统的数据库里面,对数据关系描述无外乎三种,一对一,一对多和 ... -
使用Java Rest Client操作Elasticsearch
2017-08-09 19:42 2282Elasticsearch作为一个成熟的开源框架,对主流的多种 ... -
ElasticSearch里面的偏好查询
2017-06-22 17:17 1314在es查询的时候我们可 ...
相关推荐
基于transUnet和swinUnet的医学图像分割项目实验对比,包含完整代码,可以一键运行。评估指标包括dice、iou、recall、precision等
,stm32f030无感foc方案,资料包括原理图,pcb,源程序,观测器参数,电流环参数计算表格。
分布式电源DG选址定容优化及帕累托最优解集的粒子群算法研究,多目标粒子群算法 分布式电源 DG 定容选址 网损 成本 电压偏差 通过分布式能源的选址定容确定得到帕累托最优解集,然后选择最优值进行分析,程序采用改进粒子群算法, ,核心关键词:多目标粒子群算法; 分布式电源选址定容; 网损; 成本; 电压偏差; 帕累托最优解集。,改进粒子群算法在分布式电源选址定容中的应用:优化网损与成本,考虑电压偏差
交变磁场感应材料对沥青路面温度影响的研究,交变磁场下含感应材料沥青路面温度 ,交变磁场; 感应材料; 沥青路面; 温度; 变化; 加热效率,交变磁场对含感应材料沥青路面温度的影响研究
基于Comsol模拟的三层顶板随机裂隙浆液扩散模型:考虑重力影响的瞬态扩散规律分析,Comsol模拟,考虑三层顶板包含随机裂隙的浆液扩散模型,考虑浆液重力的影响,模型采用的DFN插件建立随机裂隙,采用达西定律模块中的储水模型为控制方程,分析不同注浆压力条件下的浆液扩散规律,建立瞬态模型 ,Comsol模拟; 随机裂隙浆液扩散模型; 浆液重力影响; DFN插件; 达西定律模块储水模型; 注浆压力条件; 浆液扩散规律; 瞬态模型,Comsol浆液扩散模型:随机裂隙下考虑重力的瞬态扩散分析
对于Sqlserver数据库只是提供了简单的图形化的导出导入工具,在实际的开发和生产环境不太可能让用户在图形化的界面选择移行的对象,进行移行。 我们在数据库的移行中也遇到这种问题,需要提供一个工具给客户使用。所以我们开发了针对SQLServer数据库的cmd形式导入导出的工具。在长期的实践中不断完善,基本可以实现Oracle的导入导出工具的80%的功能,也比较的稳定。有需要的可以下载使用,也可以提供定制化的服务
内容概要:本文介绍了DeepSeek模型在不同平台上部署的方法。首先阐述了基于Ollama的本地部署,包括Ollama的安装、模型拉取以及交互模式的使用。接着讲解了DeepSeek在移动设备(iOS和Android)上的部署细节:iPhone需要通过Safari安装快捷指令,配置API Key并通过快捷指令测试运行;Android则借助Termux安装必要组件,并手动搭建Ollama环境以加载和测试模型。最后详细叙述了基于Open WebUI部署的方式,涉及Ollama、Docker Desktop及Open WebUI的安装流程及其之间的配合使用来最终达成模型的成功部署。 适用人群:面向有兴趣了解或者实际操作DeepSeek模型跨平台部署的技术开发者、研究人员以及AI爱好者。 使用场景及目标:适用于希望利用DeepSeek模型快速构建本地化应用程序、开展实验研究的用户;具体目标为掌握DeepSeek模型在桌面系统(如Linux、macOS、Windows)、iOS和Android智能手机以及云端WebUI界面上的不同部署手段和技术。 其他说明:对于每种类型的部署都提供了详细的步骤指导,旨在帮助使用者顺利完成所需工具和环境的安装,并确保模型能够正常工作。文中给出的具体链接和命令行脚本,有助于降低初次接触者的上手难度,提升部署效率和成功率。此外,还强调了一些重要的配置注意事项,例如正确输入API key以及对Ollama的初始化检查等。
,FOC 无感 混合磁链观测器 电机控制 代码 PMSM MiniDD(直驱)电机变频无感程序,包含偏心,重量,共振等感知算法,所有算法都不基于库函数,MCU底层配置完全手写
nodejs010-nodejs-cmd-shim-1.1.0-4.1.el6.centos.alt.noarch.rpm
基于S7-200 PLC的交通灯倒计时控制及组态王界面实现原理图解析,S7-200 PLC和组态王交通灯带倒计时控制 923 47 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,S7-200 PLC; 交通灯; 倒计时控制; 组态王; 梯形图接线图; IO分配; 组态画面,"S7-200 PLC与组态王交通灯倒计时控制:梯形图原理及IO分配详解"
西门子四轴卧加后处理系统:828D至840D兼容,四轴联动高效加工解决方案,支持图档处理及试看程序。,西门子四轴卧加后处理,支持828D~840D系统,支持四轴联动,可制制,看清楚联系,可提供图档处理试看程序 ,核心关键词:西门子四轴卧加后处理; 828D~840D系统支持; 四轴联动; 制程; 联系; 图档处理试看程序。,西门子四轴卧加后处理程序,支持多种系统与四轴联动
FPGA篮球赛事24秒倒计时计时器设计与实现(基于Verilog与VHDLL的优化对比),基于fpga篮球倒计时24s。 verilog和vhdl两个版本 ,基于FPGA篮球倒计时24s; Verilog版本; VHDL版本,FPGA篮球比赛倒计时24秒系统:Verilog与VHDL双版本实现
论生成式AI在大学生学习中的应用与伦理问题.pdf
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
"S7-200plc与MCGS智能居家控制系统的深度融合:组态画面、IO分配与梯形图接线图原理详解",No.63 S7-200plc和 MCGS智能居家控制系统组态 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,核心关键词:S7-200plc; MCGS智能居家控制系统; 梯形图接线图原理图; io分配; 组态画面。,"S7-200 PLC与MCGS智能居家系统组态及梯形图原理图解析"
方便暖通工程师及板换用户了解艾齐尔板式换热器选型计算,免费使用。
《四层三列堆垛式立体库控制系统:带解释的梯形图接线原理图及IO分配与组态画面详解》,4x3堆垛式立体库4层3列四层三列书架式立体库控制系统 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,立体库; 堆垛式; 控制系统; 梯形图; 接线图; 原理图; IO分配; 组态画面,"立体库控制系统原理图:四层三列堆垛式书架的IO分配与组态画面"
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx