Elasticsearch5.X的java配置

pom:

 <properties><elasticsearch.version>5.4.1</elasticsearch.version><transport.version>5.4.1</transport.version></properties><!--elasticsearch相关依赖--><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>${elasticsearch.version}</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>${transport.version}</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.7</version></dependency></dependencies>
复制代码

config:

@Configuration
public class ElasticsearchConfig {@Beanpublic TransportClient transportClient() throws UnknownHostException {// 一定要注意,9300为elasticsearch的tcp端口InetSocketTransportAddress master = new InetSocketTransportAddress(InetAddress.getByName("47.104.160.160"), 9300);// 集群名称Settings settings = Settings.builder().put("cluster.name", "es-cluster").build();TransportClient client = new PreBuiltTransportClient(settings);// 添加client.addTransportAddresses(master);return client;}
}
复制代码

utils:

@Component
public class ElasticsearchUtils {private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchUtils.class);@Autowiredprivate TransportClient transportClient;private static TransportClient client;@PostConstructpublic void init() {client = this.transportClient;}public static void searchModel(Integer pageNo, Integer pageSize) throws Exception {SearchResponse searchResponse = client.prepareSearch(EsConstants.INDEX)//指定索引库.setTypes(EsConstants.TYPE)//指定类型//  .setQuery(QueryBuilders.matchQuery("name", "tom"))//指定查询条件,这里不支持通配符 * ?.setQuery(QueryBuilders.matchAllQuery())//查询所有.setQuery(QueryBuilders.multiMatchQuery("tom", "name", "title"))//支持一个值同时匹配多个字段.setQuery(QueryBuilders.queryStringQuery("name:to?"))//支持lucene的语法 AND OR,通配符 * ? 如果对lucene比较熟悉,或者是想用通配符,可以使用这个.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("name", "tom")).mustNot(QueryBuilders.matchQuery("age", 16)))//组合查询,支持多个查询条件,并且可以给查询条件设置权重.setQuery(QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("name", "zs").boost(8.0f)).should(QueryBuilders.matchQuery("age", 19).boost(1.0f)))//组合查询,支持多个查询条件,并且可以给查询条件设置权重.setQuery(QueryBuilders.termQuery("name", "tom zhang"))//精确查询 主要针对人名  还有地名//注意:一般需要精确查询的字段,在存储的时候都不建议分词。但是已经分词了,还想精确精确查询,使用queryStringQuery,在需要精确查询的词语外面使用双引号引起来.setQuery(QueryBuilders.queryStringQuery("name:\"tom zhang\"")).setQuery(QueryBuilders.matchQuery("name", "tom zhang").operator(Operator.AND))//AND的意思是 返回的数据中必须包含 你好  和  中国这两个词  OR的意思是只包含一个词即可/*** lt:小于* lte:小于等于* gt:大于* gte:大于等于*///过滤,默认是闭区间//                .setPostFilter(QueryBuilders.rangeQuery("age").from(18).to(19).includeLower(true).includeUpper(true))// 10=<x<=20这个过滤条件可以缓存,多次查询效率高//                .setPostFilter(QueryBuilders.rangeQuery("age").gte(18).lte(19))//                .setPostFilter(QueryBuilders.rangeQuery("age").gte(18).lt(19)).setPostFilter(QueryBuilders.rangeQuery("age").gt(17).lt(19))//                .setPostFilter(FilterBuilders.rangeFilter("age").gte(10).lt(18))//实现分页,分页参数.setFrom(0).setSize(10).addSort("age", SortOrder.DESC)//ASC是升序,DESC是倒序.get();SearchHits hits = searchResponse.getHits();Long total = hits.getTotalHits();Long pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;Integer currentNo = pageNo;//获取满足条件数据的详细内容List<String> datas = new ArrayList<>();SearchHit[] hits2 = hits.getHits();for (SearchHit searchHit : hits2) {datas.add(searchHit.getSourceAsString());}}public static Map<String, Object> searchDefault(Integer pageNo, Integer pageSize) throws Exception {Integer startIndex = (pageNo - 1) * pageSize;SearchResponse searchResponse = client.prepareSearch(EsConstants.INDEX)//指定索引库.setTypes(EsConstants.TYPE)//指定类型.setQuery(QueryBuilders.matchAllQuery())//查询所有//实现分页,分页参数.setFrom(startIndex).setSize(pageSize).addSort(EsConstants.FIELD_PAYMANCOUNTS, SortOrder.DESC)//ASC是升序,DESC是倒序.get();SearchHits hits = searchResponse.getHits();Long total = hits.getTotalHits();Long pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;Integer currentNo = pageNo;SearchHit[] hits2 = hits.getHits();return getResultList(hits2, currentNo, pages, total);}//    public static Map<String, Object> searchByShopOrPrice(Integer pageNo, Integer pageSize, String sortBy, String str) throws Exception {
//        Integer startIndex = (pageNo - 1) * pageSize;
//        SearchResponse searchResponse = null;
//        if (str == null) {
//            str = "*";
//        } else {
//            str = "*" + str + "*";
//        }
//        if (sortBy != null) {
//            if ("DESC".equals(sortBy)) {
//                searchResponse = client.prepareSearch(EsConstants.INDEX)//指定索引库
//                        .setTypes(EsConstants.TYPE)//指定类型
//                        .setQuery(QueryBuilders.queryStringQuery(EsConstants.FIELD_GOODSNAME + ":" + str))
//                        //实现分页,分页参数
//                        .setFrom(startIndex)
//                        .setSize(pageSize)
//                        .addSort(EsConstants.FIELD_PRICE, SortOrder.DESC)//ASC是升序,DESC是倒序
//                        .get();
//            } else {
//                searchResponse = client.prepareSearch(EsConstants.INDEX)//指定索引库
//                        .setTypes(EsConstants.TYPE)//指定类型
//                        .setQuery(QueryBuilders.queryStringQuery(EsConstants.FIELD_GOODSNAME + ":" + str))
//                        //实现分页,分页参数
//                        .setFrom(startIndex)
//                        .setSize(pageSize)
//                        .addSort(EsConstants.FIELD_PRICE, SortOrder.ASC)//ASC是升序,DESC是倒序
//                        .get();
//            }
//        } else {
//            searchResponse = client.prepareSearch(EsConstants.INDEX)//指定索引库
//                    .setTypes(EsConstants.TYPE)//指定类型
//                    .setQuery(QueryBuilders.queryStringQuery(EsConstants.FIELD_GOODSNAME + ":" + str))
//                    //实现分页,分页参数
//                    .setFrom(startIndex)
//                    .setSize(pageSize)
//                    .get();
//        }
//        SearchHits hits = searchResponse.getHits();
//        Long total = hits.getTotalHits();
//        Long pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
//        Integer currentNo = pageNo;
//        SearchHit[] hits2 = hits.getHits();
//        return getResultList(hits2, currentNo, pages, total);
//
//    }public static Map<String, Object> searchByAll(Integer pageNo, Integer pageSize, String sortBy, String sortColumn, String str, Integer isOnSale, Integer isOnlyFamily, Integer isInStore, BigDecimal minPrice, BigDecimal maxPrice, Long catId, Long brandId) throws Exception {Integer startIndex = (pageNo - 1) * pageSize;SearchResponse searchResponse = null;SearchRequestBuilder searchRequestBuilder = client.prepareSearch(EsConstants.INDEX)//指定索引库.setTypes(EsConstants.TYPE);//指定类型if (str == null) {searchRequestBuilder.setQuery(QueryBuilders.matchAllQuery());//查询所有} else {searchRequestBuilder.setQuery(QueryBuilders.boolQuery().should(QueryBuilders.matchQuery(EsConstants.FIELD_SHOPGOODSNAME, str).boost(8.0f)).should(QueryBuilders.matchQuery(EsConstants.FIELD_CATEGORYNAME, str).boost(8.0f)).should(QueryBuilders.matchQuery(EsConstants.FIELD_MARKETINGACTIVITIESLIST, str).boost(8.0f)));}if (brandId != null) {searchRequestBuilder.setQuery(QueryBuilders.termQuery(EsConstants.FIELD_BRANDID, brandId));//精确查询 品牌Id}if (catId != null) {searchRequestBuilder.setQuery(QueryBuilders.termQuery(EsConstants.FIELD_CATID, catId));//精确查询 类目ID}if (minPrice != null) {searchRequestBuilder.setPostFilter(QueryBuilders.rangeQuery(EsConstants.FIELD_PRICE).gte(minPrice.toString()));//过滤查询 价格高于低价}if (maxPrice != null) {searchRequestBuilder.setPostFilter(QueryBuilders.rangeQuery(EsConstants.FIELD_PRICE).lte(minPrice.toString()));//过滤查询 价格低于高价}if (isOnSale != null && isOnSale == 1 ) {searchRequestBuilder.setPostFilter(QueryBuilders.rangeQuery(EsConstants.FIELD_ISMARKETINGACTIVITIES).gt("0"));//过滤查询 促销中商品}if (isInStore != null && isInStore == 1 ) {searchRequestBuilder.setPostFilter(QueryBuilders.rangeQuery(EsConstants.FIELD_ISHAVESTORE).gt("0"));//过滤查询 有货商品}if (isOnlyFamily != null && isOnlyFamily == 1) {searchRequestBuilder.setQuery(QueryBuilders.termQuery(EsConstants.FIELD_ISFAMILYONLY, "1"));//精确查询 家庭会员专享}if(sortColumn!=null){if (sortBy != null ) {if ("DESC".equals(sortBy)) {searchRequestBuilder.addSort(sortColumn, SortOrder.DESC);//ASC是升序,DESC是倒序}if ("ASC".equals(sortBy)) {searchRequestBuilder.addSort(sortColumn, SortOrder.ASC);//ASC是升序,DESC是倒序}}}//实现分页,分页参数searchRequestBuilder.setFrom(startIndex).setSize(pageSize);searchResponse = searchRequestBuilder.get();SearchHits hits = searchResponse.getHits();Long total = hits.getTotalHits();Long pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;Integer currentNo = pageNo;SearchHit[] hits2 = hits.getHits();return getResultList(hits2, currentNo, pages, total);}private static Map<String, Object> getResultList(SearchHit[] hits, Integer currentNo, Long pages, Long total) {List<Map<String, Object>> datas = new ArrayList<>();for (SearchHit searchHit : hits) {JSONObject json = JSON.parseObject(searchHit.getSourceAsString());System.out.println(json.toString());Map<String, Object> map = new HashMap<>();map.put("alterempl", json.getString("alterempl"));map.put("altertime", json.getString("altertime"));map.put("categoryid", json.getString("categoryid"));map.put("categoryname", json.getString("categoryname"));map.put("createempl", json.getString("createempl"));map.put("createtime", json.getString("createtime"));map.put("esid", json.getString("esid"));map.put("goodsid", json.getString("goodsid"));map.put("id", json.getLong("id"));map.put("isfamilyonly", json.getByte("isfamilyonly"));map.put("ishavestore", json.getByte("ishavestore"));map.put("ismarketingactivities", json.getByte("ismarketingactivities"));map.put("marketingactivitieslist", json.getString("marketingactivitieslist"));map.put("paymancounts", json.getLong("paymancounts"));map.put("price", json.getBigDecimal("price"));map.put("remark", json.getString("remark"));map.put("shopgoodsname", json.getString("shopgoodsname"));map.put("shopid", json.getString("shopid"));map.put("shopname", json.getString("shopname"));map.put("shopphotourl", json.getString("shopphotourl"));map.put("shopscore", json.getBigDecimal("shopscore"));map.put("timestamp", json.getString("timestamp"));map.put("validstatus", json.getByte("validstatus"));datas.add(map);}Map<String, Object> resultMap = new HashMap<>();resultMap.put("currPageNo", currentNo);resultMap.put("pageNos", pages);resultMap.put("total", total);resultMap.put("datas", datas);return resultMap;}//添加索引public static void addIndex(String index, String type, String id) throws Exception {IndexResponse response = client.prepareIndex(index, type, id).setSource(jsonBuilder().startObject().field("user", "kimchy").field("postDate", new Date()).field("message", "trying out Elasticsearch").endObject()).get();System.out.println(response.getId());}//删除索引public static void deleteIndex(String index, String type, String id) throws Exception {DeleteResponse response = client.prepareDelete(index, type, id).get();}```复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Spring发送带附件的电子邮件(站内和站外传送)

1.使用Spring发送带附件的电子邮件 <?xml version"1.0" encoding"UTF-8"?> <beansxmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:p"http://www.spr…

vmware 克隆后Linux没有eth网卡只有lo

想试着在虚拟机上搭下主从&#xff0c;&#xff0c;&#xff0c;结果&#xff0c;克隆出来的虚拟机没有网卡。。。只有lo 于是跟着别人的来添加一个网卡 第一步&#xff1a;打开克隆的虚拟机 第二步&#xff1a; 第三步 第四步&#xff1a; 最后&#xff1a; 之后执行reboot重启…

聊一聊 C++ 中的 namespace

一&#xff1a;背景 相信大家在分析 dump 时&#xff0c;经常会看到 WKS 和 SRV 这样的字眼&#xff0c;如下代码所示&#xff1a;00007ffa778a07b8 coreclr!WKS::gc_heap::segment_standby_list 0x0000000000000000 00007ffa778a3870 coreclr!WKS::qpf 0x989680 00007ffa778…

mysql模糊查询后分页_jsp模糊查询后的数据进行分页,但点击下一页后就查询全部的了...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼String path request.getContextPath();String basePath request.getScheme() "://" request.getServerName() ":" request.getServerPort() path "/";%>信息表#container {width: 500px;}…

会议会展活动从业技能之会销流程的16个环节

会议营销是透过相对大型活动来实现销售。会议营销是细节营销&#xff0c;一般操作流程有会前、会中、会后三个阶段共计16个环节&#xff0c;每个环节都做到位了&#xff0c;衔接好了&#xff0c;会议营销的最终效果就会得到保证。一般而言&#xff0c;会议营销分为会前营销、会…

haproxy详细介绍

Haproxy是既可以工作在7层也能工作在4层的反代工具.Haproxy的功能:路由HTTP请求到后端服务器,基于cookie作会话绑定.能够将多个请求反代至后端主机完成负载均衡的效果.主服务器失败时能自动切换到备服务器上.接受特殊的端口连接完成服务监控拒绝新连接时不会关闭已经连接的请求…

SQL JOIN连接分类[转]

1、内联接&#xff08;典型的联接运算&#xff0c;使用像 或 <> 之类的比较运算符&#xff09;&#xff1b;包括相等联接和自然联接&#xff1b; 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行&#xff1b; 2、外联接。外联接可以是左向外联接、右向…

《ASP.NET Core 6框架揭秘》实例演示[17]:利用IHttpClientFactory工厂来创建HttpClient

在一个采用依赖注入框架的应用中&#xff0c;我们一般不太推荐利用手工创建的HttpClient对象来进行HTTP调用&#xff0c;使用的HttpClient对象最好利用注入的IHttpClientFactory工厂来创建。前者引起的问题&#xff0c;以及后者带来的好处&#xff0c;将通过如下这几个演示程序…

Hadoop部署方式-高可用集群部署(High Availability)

Hadoop部署方式-高可用集群部署(High Availability) 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 本篇博客的高可用集群是建立在完全分布式基础之上的&#xff0c;详情请参考&#xff1a;https://www.cnblogs.c…

sybase 连接mysql_如何连接到Sybase SQL Anywhere数据库

Sybase SQL Anywhere数据库具有许多非常有用的功能&#xff0c;与竞争对手相比&#xff0c;它具有很高的竞争力。首先&#xff0c;它允许您处理大量数据。其次&#xff0c;它具有很高的生产率&#xff0c;也就是说&#xff0c;可以快速提供大量数据。第三&#xff0c;它需要最少…

MaintainableCSS 《可维护性 CSS》 --- 模板篇

什么是模块(Modules) ? 模块是一个特别的独立单元&#xff0c;可以与其他模块组合以形成更复杂的结构。 在客厅里&#xff0c;我们可以认为电视&#xff0c;沙发和墙艺术是模块。它们聚在一起创造一个可用的房间。 如果我们把其中一个拿走&#xff0c;其他的能继续工作。我们不…

【汇编语言】DEBUG的使用

在masm for windows中&#xff0c;需要先生存exe文件&#xff0c;然后再点调试按钮。 常用的命令有&#xff1a; R命令&#xff1a;查看、改变CPU寄存器的内容&#xff1b;如果要修改某个寄存器的内容&#xff0c;可以在r的后面接上空格和寄存器名。如&#xff1a;-r ax&#x…

centos6.6 源码安装mysql5.5_CentOS6.x下源码安装MySQL5.5

2. 卸载原有的mysql数据库[rootzabbix ~]# yum -y remove mysql mysql-server mysql-libs compat-mysql51[rootzabbix ~]# rm -rf /var/lib/mysql[rootzabbix ~]# rm /etc/my.cnf[rootzabbix ~]# rpm -qa|grep mysql #如果还能查询出来mysql文件&#xff0c;继续删除&#xff0…

学习韩立刚老师IT运维课程,成为韩立刚老师正式学生,在全国范围为你就近推荐工作。...

2018年5月21日&#xff0c;万恒教育成立IT运维就业指导部门&#xff0c;为韩立刚老师正式学生推荐工作&#xff0c;实习单位。和国内IT外包公司HR长期合作&#xff0c;韩立刚老师技术考核通过的学生&#xff0c;为学生在全国范围就近推荐工作。有学习IT运维课程&#xff0c;打算…

Leetcode 动态规划 Trapping Rain Water

本文为senlie原创。转载请保留此地址&#xff1a;http://blog.csdn.net/zhengsenlie Trapping Rain Water Total Accepted: 14568 Total Submissions: 50810My SubmissionsGiven n non-negative integers representing an elevation map where the width of each bar is 1, co…

白盒测试用例设计方法

一、白盒测试 根据软件产品的内部工作过程&#xff0c;在计算机上进行测试&#xff0c;以证实每种内部操作是否符合设计规格要求&#xff0c;所有内部成分是否已经过检查。这种测试方法就是白盒测试。白盒测试把测试对象看做一个打开的盒子&#xff0c;允许测试人员利用程序内部…

k8s 读书笔记 - 详解 Pod 调度(Ⅰ卷)

上一篇 《深入掌握 Pod》 文章我们介绍了 Pod 的知识点&#xff0c;接下来我们来继续学习 Pod 在 k8s 中的调度原理。在 k8s 平台上&#xff0c;通常情况下很少直接创建一个 Pod&#xff0c;大多情况下都是通过 Pod 的资源管理对象 来创建&#xff0c;例如&#xff1a;RC/RS、…

SaS中ne在mysql语句对应_SAS学习经验总结分享:篇四—SQL过程

SQL过程SQL过程是实现对数据集或关系数据库的表进行操作的过程&#xff0c;对数据集或关系数据库的表进行查询、修改、创建表、删除数据、插入数据和更新数据等功能。提现了SAS对大型数据库管理系统通用的SQL语言支持。SQL过程语法Proc sql ;数据操纵语句;quit;数据操纵语句&am…

.Net转Java自学之路—基础巩固篇八—总结(封装、继承、多态)

巴拉巴拉转载于:https://www.cnblogs.com/zltao/p/9074944.html

我对于全栈工程师的理解

对于才达到初级前端攻城狮的我来说&#xff0c;懵懵懂懂的我有了了解全栈工程师的机会&#xff0c;那什么是全栈工程师呢&#xff1f; 全栈工程师&#xff0c;也叫全端工程师(同时具备前端和后台能力)&#xff0c;英文Full Stack developer。是指掌握多种技能&#xff0c;并能利…