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 增删改查的更多相关文章

  1. elasticsearch增删改查crudp-----1

    Elasticsearch一些增删改查的总结 环境Centos7+Es 5.x 简单介绍下ES的原理: 1,索引  --相当于传统关系型数据库的database或schema 2,类型  --相当于传 ...

  2. elasticsearch 增删改查底层原理

    elasticsearch专栏:https://www.cnblogs.com/hello-shf/category/1550315.html 一.预备知识 在对document的curd进行深度分析 ...

  3. Elasticsearch增删改查 之 —— mget多文档查询

    之前说过了针对单一文档的增删改查,基本也算是达到了一个基本数据库的功能.本篇主要描述的是多文档的查询,通过这个查询语法,可以根据多个文档的查询条件,返回多个文档集合. 更多内容可以参考我整理的ELK文 ...

  4. ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程

    目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...

  5. Elasticsearch增删改查 之 —— Get查询

    GET API是Elasticsearch中常用的操作,一般用于验证文档是否存在:或者执行CURD中的文档查询.与检索不同的是,GET查询是实时查询,可以实时查询到索引结果.而检索则是需要经过处理,一 ...

  6. Elasticsearch增删改查 之 —— Delete删除

    删除文档也算是常用的操作了...如果把Elasticsearch当做一款普通的数据库,那么删除操作自然就很常用了.如果仅仅是全文检索,可能就不会太常用到删除. Delete API 删除API,可以根 ...

  7. Java之Elasticsearch 增删改查

    <!--ELK --> <dependency> <groupId>org.elasticsearch.client</groupId> <art ...

  8. elasticsearch增删改查操作

    目录 1. 插入数据 2. 更改数据 3. 删除数据 4. 检索文档 1. 插入数据 关于下面的代码如何使用,可以借助于kibana的console,浏览器打开地址: http://xxx.xxx.x ...

  9. ElasticSearch 增删改查

    HTTP 协议本身语义:GET 获取资源.POST 新建资源(也可以用于更新资源).PUT 更新资源.DELETE 删除资源. ES通过HTTP Restful方式管理数据:1.格式:#操作 /ind ...

随机推荐

  1. C++继承中的属性

    class A { public: int a; A() { } void print() { cout<<a; } }; class B:public A { public: int a ...

  2. Mysql - 面试题 获取每个学生的最高成绩

    题目 如下一个表, 三列, 姓名, 课程, 以及成绩, 现在想要得到知道每个学生最高成绩的课程名字. 解题

  3. 深入解读TCP/IP

    虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Microsoft都有各自的 ...

  4. SpringBoot: 6.文件上传(转)

    1.编写页面uploadFile.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  5. sqlalchemy 的操作

    使用PyMySQL的前提: 1. 先建好表 2. 自己动手需要手动去写多条SQL语句 改进: 类 ------>  表 实例化 -> 数据 这种思想叫:ORM(Object Relatio ...

  6. MySQL知识篇-SQL1

    1 SQL是什么? 答:是结构话语言,是一种操作关系型数据库的语言. 2 SQL语言分类? SQL语言 说明 举例 DDL 数据定义语言 create  drop DML 数据操作语言 insert ...

  7. 解决 ThinkPHP 5 把控制器下的文件夹当做控制器输出的问题

    目录结构: application/home/controller/user_info/User.php 输入路由:/home/user_info/user/index 看样子没毛病,但会报错: 这是 ...

  8. 第二次Java实验报告

    Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间 2019/9/12 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握 ...

  9. Python之Web前端Ajax

    Ajax: 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操 ...

  10. [转帖]Grafana背后的Nginx和Apache Proxy

    Grafana背后的Nginx和Apache Proxy https://ywnz.com/linuxyffq/5590.html 这个网站貌似非常非常好 在本文中,我将向你展示如何在Nginx和Ap ...