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+ 现在就用系列(四):箭头函数 => ...
随机推荐
- FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言
之前文章分享FastAPI(七十二)实战开发<在线课程学习系统>接口开发-- 留言列表开发,这次我们分享如何回复留言 按照惯例,我们还是去分析这里面的逻辑. 1.判断用户是否登录 2.用户 ...
- Spring集成web环境(手动实现)
1.创建UserDao接口及其实现类UserDaoImpl(接口代码省略) public class UserDaoImpl implements UserDao { @Override public ...
- vue3 监听路由($route)变化
setup() { // ... }, watch: { $route(m, n) { console.log('mm', m) console. ...
- HTML5有哪些新特性
(一) 语义标签 <header>表示页面中一个内容区块或整个页面的标题. <section>页面中的一个内容区块,如章节.页眉.页脚或页面的其他地方,可以和h1.h2--元 ...
- 2021.07.02 P1383 高级打字机题解(可持久化平衡树)
2021.07.02 P1383 高级打字机题解(可持久化平衡树) 分析: 从可以不断撤销并且查询不算撤销这一骚操作可以肯定这是要咱建一棵可持久化的树(我也只会建可持久化的树,当然,还有可持久化并查集 ...
- window 的简单使用
window 的延迟加载 js代码 window的原始用法 (缺点 : 只能使用一次) window.onload = function() { var btn = document.querySel ...
- 【笔记】排查CPU占用过高
本文是该教程视频的笔记 https://www.bilibili.com/video/BV15T4y1y7eH 1. 问题演示 将演示项目打包放到服务器运行 执行 curl http://localh ...
- python数据处理-matplotlib入门(2)-利用随机函数生成变化图形2
鉴于上一篇中最后三个问题: 1.上述程序是否能进行优化(比如功能相同的) 2.创建三个3个实例,用了3个语句,能否建一个函数,只输入一个数n,就自动创建n个实例?同时,每个实例的num_times随机 ...
- 2003031121——浦娟——Python数据分析第七周作业——MySQL的安装及使用
项目 要求 课程班级博客链接 20级数据班(本) 作业要求链接 Python第七周作业 博客名称 2003031121--浦娟--Python数据分析第七周作业--MySQL的安装及使用 要求 每道题 ...
- esp8266 esp01s wifi继电器 初步点灯成功!艰难的历程啊,期间差点烧了
0x00 前言说明 放假这几天,在淘宝买了esp01s,和一个搭配esp01s的wifi继电器准备做一些IOT(物联网)实验,踩了不少的坑,总算是点灯成功了!下面记录一些实验的拍照吧~ 继电器参数说明 ...