阿里云 elasticsearch 增删改查
kibana 控制台

# 查询所有数据
GET /yixiurds_dev/_search
{
"query": {
"match_all": {
}
}
}
# 查询数据
GET /yixiurds_dev/elasticsearch/_search
{
"query": {
"match": {
"id":126
}
}
}
# 添加数据
POST /yixiurds_dev/elasticsearch/
{
"id":126,
"name":"测试",
"picture":"//yixiulian.oss-cn-shenzhen.aliyuncs.com/youpin/storage/376b74064cfeba5eff83b13ec24a269a.jpg",
"seo_title": "",
"seo_keywords": ""
}
# 修改数据
PUT /yixiurds_dev/elasticsearch/MQmk2msBS7i08yOenxyX
{
"id":126,
"name":"测试2",
"picture":"//yixiulian.oss-cn-shenzhen.aliyuncs.com/youpin/storage/376b74064cfeba5eff83b13ec24a269a.jpg",
"seo_title": "",
"seo_keywords": ""
}
# 不能删除数据
DELETE /yixiurds_dev/elasticsearch/_delete
{
"id":126
}
# 删除数据
DELETE /yixiurds_dev/elasticsearch/MQmk2msBS7i08yOenxyX
{}
# 删除索引
DELETE /yixiurds_dev
# 创建索引
PUT /yixiurds_dev
代码示例
@Component
public class ElasticsearchUtils {
private static final Logger logger = LoggerFactory.getLogger(ElasticsearchUtils.class);
private static String elasticHostName;
private static String elasticUserName;
private static String elasticPassword;
private static String elasticIndex;
private static RestClient restClient;
private static RestClient getRestClient() {
if (restClient == null) {
synchronized (ElasticsearchUtils.class) {
if (restClient == null) {
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(elasticUserName, elasticPassword));
restClient = RestClient.builder(new HttpHost(elasticHostName, 9200))
.setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)).build();
}
return restClient;
}
} else {
return restClient;
}
}
/**
* 更新搜索的商品
*/
public static void updateGoodsList(List<Goods> goodsList) {
RestClient restClient = getRestClient();
goodsList.forEach(goods -> {
GoodsEsResp goodsEsResp = getGoods(goods.getId());
List<String> esIds = goodsEsResp.getEsIds();
if (CollectionUtils.isEmpty(esIds)) {
return;
}
esIds.forEach(esId -> {
String method = "PUT";
String endpoint = "/" + elasticIndex + "/elasticsearch/" + esId;
HttpEntity entity = new NStringEntity(
"{\n" +
" \"id\" : " + goods.getId() + ",\n" +
" \"name\" : \"" + goods.getName()+ "\",\n" +
" \"picture\" : \"" + goods.getPicture() + "\",\n" +
" \"seo_title\" : \"" + goods.getSeoTitle() + "\",\n" +
" \"seo_keywords\" : \"" + goods.getSeoKeywords() + "\"\n" +
"}", ContentType.APPLICATION_JSON);
Response response = null;
try {
response = restClient.performRequest(method, endpoint, Collections.<String, String>emptyMap(), entity);
logger.info(JSON.toJSONString(response));
} catch (IOException e) {
logger.error(e.toString());
}
});
});
}
/**
* 添加搜索的商品
*/
public static void addGoodsList(List<Goods> goodsList) {
RestClient restClient = getRestClient();
goodsList.forEach(goods -> {
String method = "POST";
String endpoint = "/" + elasticIndex + "/elasticsearch/";
HttpEntity entity = new NStringEntity(
"{\n" +
" \"id\" : " + goods.getId() + ",\n" +
" \"name\" : \"" + goods.getName()+ "\",\n" +
" \"picture\" : \"" + goods.getPicture() + "\",\n" +
" \"seo_title\" : \"" + goods.getSeoTitle() + "\",\n" +
" \"seo_keywords\" : \"" + goods.getSeoKeywords() + "\"\n" +
"}", ContentType.APPLICATION_JSON);
Response response = null;
try {
response = restClient.performRequest(method, endpoint, Collections.<String, String>emptyMap(), entity);
logger.info(JSON.toJSONString(response));
} catch (IOException e) {
logger.error(e.toString());
}
});
}
/**
* 删除搜索的商品
*/
public static void delGoodsList(List<Goods> goodsList) {
RestClient restClient = getRestClient();
goodsList.forEach(goods -> {
GoodsEsResp goodsEsResp = getGoods(goods.getId());
List<String> esIds = goodsEsResp.getEsIds();
if (CollectionUtils.isEmpty(esIds)) {
return;
}
esIds.forEach(esId -> {
String method = "DELETE";
String endpoint = "/" + elasticIndex + "/elasticsearch/" + esId;
HttpEntity entity = new NStringEntity(
"{}", ContentType.APPLICATION_JSON);
Response response = null;
try {
response = restClient.performRequest(method, endpoint, Collections.<String, String>emptyMap(), entity);
logger.info(JSON.toJSONString(response));
} catch (IOException e) {
logger.error(e.toString());
}
});
});
}
/**
* 获取搜索的商品
*/
public static GoodsEsResp getGoods(Long goodsId) {
GoodsEsResp goodsEsResp = new GoodsEsResp();
RestClient restClient = getRestClient();
String method = "GET";
String endpoint = "/" + elasticIndex + "/elasticsearch/_search";
HttpEntity entity = new NStringEntity("{\n" +
" \"query\": {\n" +
" \"match\": {\n" +
" \"id\":" + goodsId + "\n" +
" }\n" +
" }\n" +
"}", ContentType.APPLICATION_JSON);
Response response = null;
try {
response = restClient.performRequest(method, endpoint, Collections.<String, String>emptyMap(), entity);
JSONObject jsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity()));
Object hits = jsonObject.get("hits");
JSONArray jsonArray = (JSONArray) ((JSONObject) hits).get("hits");
List<String> esIds = new ArrayList<>();
jsonArray.forEach(o -> {
String esId = (String) ((JSONObject) o).get("_id");
if (StringUtils.isNotBlank(esId)) {
esIds.add(esId);
}
});
goodsEsResp.setEsIds(esIds);
logger.info(JSON.toJSONString(response));
} catch (IOException e) {
logger.error(e.toString());
}
return goodsEsResp;
}
public String getElasticHostName() {
return elasticHostName;
}
@Value("${aliyun_elasticsearch_host}")
public void setElasticHostName(String elasticHostName) {
ElasticsearchUtils.elasticHostName = elasticHostName;
}
public String getElasticUserName() {
return elasticUserName;
}
@Value("${aliyun_elasticsearch_username}")
public void setElasticUserName(String elasticUserName) {
ElasticsearchUtils.elasticUserName = elasticUserName;
}
public String getElasticPassword() {
return elasticPassword;
}
@Value("${aliyun_elasticsearch_password}")
public void setElasticPassword(String elasticPassword) {
ElasticsearchUtils.elasticPassword = elasticPassword;
}
public String getElasticIndex() {
return elasticIndex;
}
@Value("${aliyun_elasticsearch_index}")
public void setElasticIndex(String elasticIndex) {
ElasticsearchUtils.elasticIndex = elasticIndex;
}
}
指定ID代替自动生成的_id可以节省一次查询
# 添加数据
POST /index_test/type_test/127
{
"id":127,
"name":"测试",
"picture":"//yixiulian.oss-cn-shenzhen.aliyuncs.com/youpin/storage/376b74064cfeba5eff83b13ec24a269a.jpg",
"seo_title": "",
"seo_keywords": ""
}
查询所有:

# id查询数据
GET /index_test/type_test/127
批量同步
DataWorks定时同步数据库的数据到ES
一个index 对应多个type:
PUT /index_test4
{
"mappings":{
"type_1":{
"_all" : {"enabled" : true},
"properties":{
"field_1":{ "type":"string"},
"field_2":{ "type":"long"}
}
},
"type_2":{
"properties":{
"field_3":{ "type":"string"},
"field_4":{ "type":"date"}
}
}
}
}
阿里云 elasticsearch 增删改查的更多相关文章
- elasticsearch增删改查crudp-----1
Elasticsearch一些增删改查的总结 环境Centos7+Es 5.x 简单介绍下ES的原理: 1,索引 --相当于传统关系型数据库的database或schema 2,类型 --相当于传 ...
- elasticsearch 增删改查底层原理
elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.预备知识 在对document的curd进行深度分析 ...
- Elasticsearch增删改查 之 —— mget多文档查询
之前说过了针对单一文档的增删改查,基本也算是达到了一个基本数据库的功能.本篇主要描述的是多文档的查询,通过这个查询语法,可以根据多个文档的查询条件,返回多个文档集合. 更多内容可以参考我整理的ELK文 ...
- ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程
目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...
- Elasticsearch增删改查 之 —— Get查询
GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理,一 ...
- Elasticsearch增删改查 之 —— Delete删除
删除文档也算是常用的操作了...如果把Elasticsearch当做一款普通的数据库,那么删除操作自然就很常用了.如果仅仅是全文检索,可能就不会太常用到删除. Delete API 删除API,可以根 ...
- Java之Elasticsearch 增删改查
<!--ELK --> <dependency> <groupId>org.elasticsearch.client</groupId> <art ...
- elasticsearch增删改查操作
目录 1. 插入数据 2. 更改数据 3. 删除数据 4. 检索文档 1. 插入数据 关于下面的代码如何使用,可以借助于kibana的console,浏览器打开地址: http://xxx.xxx.x ...
- ElasticSearch 增删改查
HTTP 协议本身语义:GET 获取资源.POST 新建资源(也可以用于更新资源).PUT 更新资源.DELETE 删除资源. ES通过HTTP Restful方式管理数据:1.格式:#操作 /ind ...
随机推荐
- C++继承中的属性
class A { public: int a; A() { } void print() { cout<<a; } }; class B:public A { public: int a ...
- Mysql - 面试题 获取每个学生的最高成绩
题目 如下一个表, 三列, 姓名, 课程, 以及成绩, 现在想要得到知道每个学生最高成绩的课程名字. 解题
- 深入解读TCP/IP
虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的 ...
- SpringBoot: 6.文件上传(转)
1.编写页面uploadFile.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- sqlalchemy 的操作
使用PyMySQL的前提: 1. 先建好表 2. 自己动手需要手动去写多条SQL语句 改进: 类 ------> 表 实例化 -> 数据 这种思想叫:ORM(Object Relatio ...
- MySQL知识篇-SQL1
1 SQL是什么? 答:是结构话语言,是一种操作关系型数据库的语言. 2 SQL语言分类? SQL语言 说明 举例 DDL 数据定义语言 create drop DML 数据操作语言 insert ...
- 解决 ThinkPHP 5 把控制器下的文件夹当做控制器输出的问题
目录结构: application/home/controller/user_info/User.php 输入路由:/home/user_info/user/index 看样子没毛病,但会报错: 这是 ...
- 第二次Java实验报告
Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间 2019/9/12 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握 ...
- Python之Web前端Ajax
Ajax: 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操 ...
- [转帖]Grafana背后的Nginx和Apache Proxy
Grafana背后的Nginx和Apache Proxy https://ywnz.com/linuxyffq/5590.html 这个网站貌似非常非常好 在本文中,我将向你展示如何在Nginx和Ap ...