es6.4.2api
这是讲数据库的数据导入到es里 所有用到了mysql!
1.依赖
<?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>
<groupId>cn.thislx</groupId>
<artifactId>springboot-es</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-es</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--ES6.4.2 start-->
<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.2</version>
<exclusions>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--ES6.4.2 end -->
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.39</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.配置文件
# Elasticsearch
# 9200端口是用来让HTTP REST API来访问ElasticSearch,而9300端口是传输层监听的默认端口
#es地址
elasticsearch.ip=127.0.0.1
#es端口
elasticsearch.port=9300
#连接池数量
elasticsearch.pool=5
#集群名称
elasticsearch.cluster.name=elasticsearch
#server.port=8181
#mysql 连接地址与数据库名字
spring.datasource.url=jdbc:mysql:///es
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#帐号
spring.datasource.username=root
#密码
spring.datasource.password=root
#扫描mapper.xml文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
#扫描实体类包
mybatis.type-aliases-package=com.xiaoteng.entity
3.ESConfig
package cn.thislx.springbootes.config;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
/**
* @Configuration用于定义配置类,可替换xml配置文件
*/
@Configuration
public class ElasticsearchConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchConfig.class);
/**
* elk集群地址
*/
@Value("${elasticsearch.ip}")
private String hostName;
/**
* 端口
*/
@Value("${elasticsearch.port}")
private String port;
/**
* 集群名称
*/
@Value("${elasticsearch.cluster.name}")
private String clusterName;
/**
* 连接池
*/
@Value("${elasticsearch.pool}")
private String poolSize;
/**
* Bean name default 函数名字
*
* @return
*/
@Bean(name = "transportClient")
public TransportClient transportClient() {
LOGGER.info("Elasticsearch初始化开始。。。。。");
TransportClient transportClient = null;
try {
// 配置信息
Settings esSetting = Settings.builder()
.put("cluster.name", clusterName) //集群名字
.put("client.transport.sniff", true)//增加嗅探机制,找到ES集群
.put("thread_pool.search.size", Integer.parseInt(poolSize))//增加线程池个数,暂时设为5
.build();
//配置信息Settings自定义
transportClient = new PreBuiltTransportClient(esSetting);
TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
transportClient.addTransportAddresses(transportAddress);
} catch (Exception e) {
LOGGER.error("elasticsearch TransportClient create error!!", e);
}
LOGGER.info("Elasticsearch初始化结束。。。。。");
return transportClient;
}
}
4.查看集群信息
class test{
@Autowired
private TransportClient client;
@Test
public void test7(){
List<DiscoveryNode> discoveryNodes = client.connectedNodes();
for (DiscoveryNode discoveryNode : discoveryNodes) {
System.out.println("discoveryNode = " + discoveryNode);
}
}
}
5.判断索引是否存在
@Test
public void test8(){
//判断索引是否存在
String index="goods";
IndicesExistsResponse indicesExistsResponse = client.admin().indices()
.exists(new IndicesExistsRequest(index)).actionGet();
boolean exists = indicesExistsResponse.isExists();
System.out.println(exists);
}
6.创建索引
@Test
public void test8(){
//判断索引是否存在
String index="goods";
IndicesExistsResponse indicesExistsResponse = client.admin().indices()
.exists(new IndicesExistsRequest(index)).actionGet();
boolean exists = indicesExistsResponse.isExists();
//如果不存在就创建
if (!exists){
CreateIndexResponse createIndexResponse = client.admin().indices().prepareCreate(index)
.execute().actionGet();
//是否创建成功
boolean acknowledged = createIndexResponse.isAcknowledged();
}
}
7.删除索引
@Test
public void test8(){
//判断索引是否存在
String index="users";
IndicesExistsResponse indicesExistsResponse = client.admin().indices()
.exists(new IndicesExistsRequest(index)).actionGet();
boolean exists = indicesExistsResponse.isExists();
//如果存在就删除
if (exists){
DeleteIndexResponse deleteIndexResponse = client.admin().indices()
.prepareDelete(index).execute().actionGet();
boolean acknowledged = deleteIndexResponse.isAcknowledged();
//true 删除成功
System.out.println("acknowledged = " + acknowledged);
}
}
8.判断索引下的类型是否存在
@Test
public void test8(){
//有此索引的前提下 不然会报错
String index="goods";
//类型
String type="_doc";
//判断索引下type是否存在
boolean exists = client.admin().indices().prepareTypesExists(index).setTypes(type).
execute().actionGet().isExists();
System.out.println(exists);
}
9.往索引添加数据
@Test //index =users type=doc
public void test8(){
String index="users";
String type="doc";
//1.对象
EsModel model = new EsModel();
model.setId("2");
model.setName("小明");
model.setAge(20);
model.setDate(new Date());
//讲对象转为json
JSONObject jsonObject= (JSONObject) JSONObject.toJSON(model);
//返回id
IndexResponse indexResponse = client.prepareIndex(index, type,
jsonObject.getString("id"))
.setSource(jsonObject).get();
//拿到id
String id1 = indexResponse.getId();
System.out.println(id1);
//2.jsonObject key:value 形式
JSONObject object=new JSONObject();
object.put("id",UUID.randomUUID().toString().replaceAll("-","").
toUpperCase());
object.put("name","小红");
object.put("age",25);
object.put("date",new Date());
IndexResponse response = client.prepareIndex(index, type,
object.getString("id")).setSource(object).get();
String id = response.getId();
System.out.println("id = " + id);
}
10.通过id获取数据 显示的字段 以及排除字段(不显示)
@Test //index =users type=doc
public void test8(){
String index="users";
String type="doc";
//通过id获取数据
GetRequestBuilder getRequestBuilder = client.prepareGet(index, type,
"0DC8ADD7F0184608BB7356441AC8B2A4");
String[] files={"name","age","id"};
//显示的字段和排除的字段 显示可数组可单个字符出
GetResponse documentFields = getRequestBuilder.setFetchSource(files,null).execute().actionGet();
String sourceAsString = documentFields.getSourceAsString();
System.out.println(sourceAsString);
Map<String, Object> source = documentFields.getSource();
System.out.println(source);
}
11.通过id更新数据
@Test //index =users type=doc
public void test8() {
String index = "users";
String type = "doc";
String id = "0DC8ADD7F0184608BB7356441AC8B2A4";
JSONObject object = new JSONObject();
object.put("id", id);
object.put("name", "小庄");
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(index).type(type).id(id).doc(object);
client.update(updateRequest);
}
12.通过id删除数据
@Test //index =users type=doc
public void test8() {
String index = "users";
String type = "doc";
String id = "0DC8ADD7F0184608BB7356441AC8B2A4";
DeleteResponse deleteResponse = client.prepareDelete(index, type, id).execute().actionGet();
int status = deleteResponse.status().getStatus();
//200 successful
System.out.println("status = " + status);
}
13.分页查询 显示想显示的字段 排序 没有条件
@Test
public void test8() {
String index = "goods"; //索引
String type = "_doc"; //类型
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index).setTypes(type);
//要显示的字段
String fields="brandName,price,saleNum,categoryName";
String[] split = fields.split(",");
// 需要显示的字段,逗号分隔(缺省为全部字段)
if (StringUtils.isNotEmpty(fields)) {
//第一个参数 可以数一个字符串 可以是一个数组 第二个参数是排除
searchRequestBuilder.setFetchSource(split, null);
}
//根据 price排序 倒叙
searchRequestBuilder.addSort("price", SortOrder.DESC);
// 分页应用 pageNum=(n-1)*m; pageSize=m; n为当前页,m为显示多少条
searchRequestBuilder.setFrom(1).setSize(11);
SearchResponse searchResponse = searchRequestBuilder.
execute().actionGet();
SearchHits hits = searchResponse.getHits();
//总共查多少条数据
long totalHits = hits.totalHits;
//处理了几条 展示的size 我这里是11条 对应上面11
int length = hits.getHits().length;
System.out.println("totalHits = " + totalHits);
System.out.println("length = " + length);
for (SearchHit hit : hits) {
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
System.out.println(sourceAsMap);
}
}
14.再加+++
es6.4.2api的更多相关文章
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- webpack+react+redux+es6开发模式
一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入 ...
- ES6的一些常用特性
由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...
- ES6(块级作用域)
我们都知道在javascript里是没有块级作用域的,而ES6添加了块级作用域,块级作用域能带来什么好处呢?为什么会添加这个功能呢?那就得了解ES5没有块级作用域时出现了哪些问题. ES5在没有块级作 ...
- es6小白学习笔记(一)
1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...
- ES6之变量常量字符串数值
ECMAScript 6 是 JavaScript 语言的最新一代标准,当前标准已于 2015 年 6 月正式发布,故又称 ECMAScript 2015. ES6对数据类型进行了一些扩展 在js中使 ...
- ES6之let命令详解
let与块级作用域 { var foo='foo'; let bar='bar'; } console.log(foo,'var'); //foo varconsole.log(bar ,'bar') ...
- ES6 箭头函数中的 this?你可能想多了(翻译)
箭头函数=>无疑是ES6中最受关注的一个新特性了,通过它可以简写 function 函数表达式,你也可以在各种提及箭头函数的地方看到这样的观点——“=> 就是一个新的 function”. ...
- ES6+ 现在就用系列(二):let 命令
系列目录 ES6+ 现在就用系列(一):为什么使用ES6+ ES6+ 现在就用系列(二):let 命令 ES6+ 现在就用系列(三):const 命令 ES6+ 现在就用系列(四):箭头函数 => ...
随机推荐
- web.xml 配置 contextConfigLocation
web.xml中classpath:和classpath*: 有什么区别? classpath:只会到你的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件 ...
- HTML2Canvas使用总结
1:指定要生成的DOM元素id 2: 某些图片动态赋值src的url或者base64可能不会被立即渲染:可以设置一个定时器解决 3:可以调用次方法得到的canvas元素转一下格式 png/jpg 4: ...
- 基于PromiseA+规范实现一个promise
实现如果下规范的promise Aplus规范 1,promise是一个类:有三个状态 pending/等待态 fulfilled/成功态 rejected/失败态 2,promise默认执行器立即执 ...
- vue项目处理dpr和多屏幕适配问题
<!DOCTYPE html> <html style="font-size:37.5px"> <head> <meta charset= ...
- Python入门-第一行代码到多行代码
不管学啥语言,开始的第一行代码都是: print("hello word") 回车之后,就代表你正式进入代码的世界! 如果报错,恭喜你获得第一个书写bug,请检查单词拼写,双引号, ...
- vue动态绑定属性--基本用法及动态绑定class
动态绑定属性v-bind:,语法糖形式:省略v-bind,仅写一个冒号. 一.动态绑定基本属性 1 <body> 2 <!-- v-bind 动态绑定属性-基本用法 --> 3 ...
- openlayers API实现鹰眼图OverviewMap时地图不断闪烁等问题的解决思路
前言:我吐了,OpenLayers的巨坑之一--鹰眼图OverviewMap创建之必备注意事项. 许久没有更新博客的我,在今天饱受折磨之后一定要分享一下(这么过分一定要说出来.jpg) 相信大家如果使 ...
- Golang Zap日志
Zap日志解析 Config.yaml zap: level: 'info' #日志级别 format: 'console' #输出的级别,有console和json prefix: '[cateri ...
- hibernate查询不到关联对象列表-fetchType的选择
概述 昨天排查问题的时候,发现使用hibernate关联对象时,订单实体类对象死活无法获取关联的订单明细列表 Order order = orderDao.findById(201L); //明明数据 ...
- 2.1 安装Linux系统对硬件有什么要求?
很多初学者在安装 Linux 系统时,都对自己的电脑配置存在质疑,担心其是否能够满足安装 Linux 的要求.本节就从 CPU.内存.硬盘.显卡等这些方面,详细介绍一下安装 Linux 系统的最低配置 ...