搭建模块

创建二个项目

gmall-list-service的appliction.properties:

server.port=8073
spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=rootmybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*Mapper.xmlspring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.0.100:2181spring.dubbo.application.name=gmall-list-service
spring.dubbo.protocol.name=dubbo
spring.dubbo.base-package=com.javawxidspring.elasticsearch.jest.uris=http://192.168.0.100:9200logging.level.root=info

gmall-list-service的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.javawxid.gmall</groupId><artifactId>gmall-parent</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.javawxid.gmall</groupId><artifactId>gmall-list-service</artifactId><version>0.0.1-SNAPSHOT</version><name>gmall-list-service</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.javawxid.gmall</groupId><artifactId>gmall-service-util</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.javawxid.gmall</groupId><artifactId>gmall-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><!-- 导入Jest依赖 --><!-- https://mvnrepository.com/artifact/io.searchbox/jest --><dependency><groupId>io.searchbox</groupId><artifactId>jest</artifactId><version>5.3.3</version></dependency><!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna --><dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>4.5.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

其中jest和jna请将版本号,部分纳入gmall-parent中管理。spring-boot-starter-data-elasticsearch不用管理版本号,其版本跟随springboot的1.5.10大版本号。

gmall-list-web的appliction.properties:

server.port=8083spring.dubbo.registry.address=192.168.0.100:2181spring.dubbo.protocol.name=dubbo
spring.dubbo.application.name=gmall-list-web
spring.dubbo.base-package=com.javawxidspring.dubbo.consumer.timeout=600000
spring.dubbo.consumer.check=falsespring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=falselogging.level.root=info

gmall-list-web的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.javawxid.gmall</groupId><artifactId>gmall-parent</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.javawxid.gmall</groupId><artifactId>gmall-list-web</artifactId><version>0.0.1-SNAPSHOT</version><name>gmall-list-web</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.javawxid.gmall</groupId><artifactId>gmall-api</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.javawxid.gmall</groupId><artifactId>gmall-web-util</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2、 关于es 的java 客户端的选择

目前市面上有两类客户端

一类是TransportClient 为代表的ES原生客户端,不能执行原生dsl语句必须使用它的Java api方法。

另外一种是以Rest Api为主的missing client,最典型的就是jest。 这种客户端可以直接使用dsl语句拼成的字符串,直接传给服务端,然后返回json字符串再解析。

两种方式各有优劣,但是最近elasticsearch官网,宣布计划在7.0以后的版本中废除TransportClient。以RestClient为主。

所以在官方的RestClient 基础上,进行了简单包装的Jest客户端,就成了首选,而且该客户端也与springboot完美集成。

3插入数据

PUT /movie_chn/movie/1

{ "id":1,

"name":"红海行动",

"doubanScore":8.5,

"actorList":[

{"id":1,"name":"张译"},

{"id":2,"name":"海清"},

{"id":3,"name":"张涵予"}

]

}

PUT /movie_chn/movie/2

{

"id":2,

"name":"湄公河行动",

"doubanScore":8.0,

"actorList":[

{"id":3,"name":"张涵予"}

]

}

PUT /movie_chn/movie/3

{

"id":3,

"name":"红海事件",

"doubanScore":5.0,

"actorList":[

{"id":4,"name":"张晨"}

]

}

4、在测试类中测试ES

package com.javawxid;import io.searchbox.client.JestClient;
import io.searchbox.core.Search;
import io.searchbox.core.SearchResult;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;@RunWith(SpringRunner.class)
@SpringBootTest
public class GmallListServiceApplicationTests {@AutowiredJestClient jestClient;@Testpublic void testEs() throws IOException {String query="{\n" +"  \"query\": {\n" +"    \"match\": {\n" +"      \"actorList.name\": \"张译\"\n" +"    }\n" +"  }\n" +"}";Search search = new Search.Builder(query).addIndex("movie_chn").addType("movie").build();SearchResult result = jestClient.execute(search);List<SearchResult.Hit<HashMap, Void>> hits = result.getHits(HashMap.class);for (SearchResult.Hit<HashMap, Void> hit : hits) {HashMap source = hit.source;System.err.println("source = " + source);}}}

打印结果:

source = {doubanScore=8.5, es_metadata_id=1, name=红海行动, actorList=[{id=1.0, name=张译}, {id=2.0, name=海清}, {id=3.0, name=张涵予}], id=1.0}
source = {doubanScore=5.0, es_metadata_id=3, name=红海事件, actorList=[{id=4.0, name=张晨}], id=3.0}
source = {doubanScore=8.0, es_metadata_id=2, name=湄公河行动, actorList=[{id=3.0, name=张涵予}], id=2.0}

以上技术方面的准备就做好了。

全文检索工具elasticsearch:第三章: Java程序中的应用相关推荐

  1. 全文检索工具elasticsearch:第一章:理论知识

    搜索 什么是搜索, 计算机根据用户输入的关键词进行匹配,从已有的数据库中摘录出相关的记录反馈给用户. 常见的全网搜索引擎,像百度.谷歌这样的.但是除此以外,搜索技术在垂直领域也有广泛的使用,比如淘宝. ...

  2. 第三章 Java Servlet基础

    第三章 Java Servlet基础 3.6.2 转发 1.获得RequestDispatcher对象 2.RequestDispatcher对象调用forward()方法实现转发 请求转发工作原理 ...

  3. CoreJava 笔记总结-第三章 Java的基本程序设计结构

    CoreJava 笔记总结 文章目录 CoreJava 笔记总结 第三章 Java的基本程序设计结构 数据类型 1. 整型 2. 浮点类型 3. char类型 4. boolean类型 变量与常量 1 ...

  4. Java并发编程 - 第三章 Java内存模型

    前言: Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 Java 程序员,本章将揭开 Java 内存模型神秘的面纱. 一.Java 内存模型的基础 1.1 并发编程模型的两个关键问 ...

  5. 第三章. Java反射

    第三章. Java反射 1. 反射 2. 反射接口 2.1获取Class方式: 2.2 获取成员变量并调用 2.3 获取成员方法并调用 2.4 获取构造方法并调用 2.5 获取父类信息 3. 反射应用 ...

  6. 全文检索工具elasticsearch

    二 .全文检索工具elasticsearch 1 . lucene与elasticsearch 咱们之前讲的处理分词,构建倒排索引,等等,都是这个叫lucene的做的.那么能不能说这个lucene就是 ...

  7. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  8. unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  9. Java 程序中的多线程

    在 Java 程序中使用多线程要比在 C 或 C++ 中容易得多,这是因为 Java 编程语言提供了语言级的支持.本文通过简单的编程示例来说明 Java 程序中的多线程是多么直观.读完本文以后,用户应 ...

  10. 使用comm在java程序中管理本地端口[回钦波:高级软件工程师]

    使用comm在java程序中管理本地端口 最近在做电信项目,遇到一些专业性的问题,在这里和大家一起分享下comm包下的类及如何使用等问题: 在java程序中,为了实现同本地系统的硬件端口(RS-232 ...

最新文章

  1. Cuda编程学习(一)
  2. 2019年嵌入式开发系统详细分析告诉你是否还值得去学习
  3. ubuntu安装java8
  4. 单机装两个mysql_单机环境下安装多个MySQL服务器
  5. golang for 循环中使用协程的问题
  6. 不实用额外变量 交换_变量交换:巧用异或运算
  7. c语言推箱子代码_C语言烂大街的东西都学不会!C语言多关卡推箱子制作教程
  8. 总结并发编程常见面试题
  9. R VS Python, 你会选择谁呢?
  10. 职中计算机中级工考试,2015年中级职计算机考试基本知识点.doc
  11. python爬虫02 - 爬虫请求模块 request库 json数据
  12. Orcad Schematic常用功能
  13. HTML5的骨架是什么,HTML5 骨架
  14. 【区块链】开源社区发力区块链,超级账本会成就Linux一样的传奇吗?
  15. 攻防世界misc——misc1
  16. 门禁服务器故障怎样修复,门禁常见故障及解决方法
  17. 信号处理——Hilbert变换及谱分析
  18. 【从kitti开始自动驾驶】--5. GPS资料发布
  19. 实操手册:如何在GKE上部署HTTP(S) Load Balancer及容器应用程式
  20. Cnopendata国家基金项目数据简介

热门文章

  1. 2022/7/4学习总结
  2. iOS11 持续定位
  3. 计算机启动后没有桌面图标,电脑开机后桌面没有图标的解决方法
  4. yarn降版本_npm依赖版本锁定和管理
  5. Linux的kern日志和demsg,Linux dmesg
  6. 优酷IPv6改造纪实:视频行业首家拥抱下一代网络技术
  7. 解决deepin-wine 下微信黑窗口问题
  8. sqlserver数据库批量插入-SqlBulkCopy
  9. Ubuntu上面搭建Java开发环境
  10. IGS与欧姆龙CP1E PLC通讯测试