记录一下,elasticsearch从创建索引到插入数据的一个crud操作。

一、创建索引

curl -XPUT "http://192.168.99.1:9200/productindex" -d'
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"product" : {
"properties": {
"name" : {
"type": "text",
"fielddata": true
},
"price" : {
"type": "long"
}
}
}
}
}'

二、插入数据

1、如果需要插入的数据已经存在,那么执行替换操作,如果不存在则执行插入操作

注意: 1、此处是手动指定的id的值

                  2、如果productindex/product/1 这个数据存在,如果请求体中只有name字段,那么这行数据的price字段就会被删除,即执行的是替换操作,而不是更新操作

curl -XPUT "http://192.168.99.1:9200/productindex/product/1" -d'
{
"name" : "pen",
"price" : 2
}'

2、如果数据已经存在,那么就报错,不存在则执行插入操作

注意:此处只需要加上_create或加上op_type=create即可

curl -XPUT "http://192.168.99.1:9200/productindex/product/1?op_type=create" -d'
{
"name" : "new pen",
"price" : 2
}'

 或

curl -XPUT "http://192.168.99.1:9200/productindex/product/1/_create" -d'
{
"name" : "new pen",
"price" : 2
}'

 3、插入数据的时候自动生成id的值

注意:此处就需要使用post请求,而不是使用put请求。

curl -XPOST "http://192.168.99.1:9200/productindex/product" -d'
{
"name" : "pen",
"price" : 2
}'

三、修改数据

1、使用_update或op_type=update指定修改,数据不存在报错

curl -XPOST "http://192.168.99.1:9200/productindex/product/1/_update" -d'
{
"doc": {
"name" : "update new name"
}
}'
_update" -d'
{
"doc": {
"name" : "update new name"
}
}'

2、使用乐观锁version控制修改(防止在并发情况下数据修改有误)

后方的这个version的值为数据当前的版本号,如果es中这个数据的版本号发生了变化,则修改失败。

curl -XPOST "http://192.168.99.1:9200/productindex/product/1/_update?version=7" -d'
{
"doc": {
"name" : "update new name"
}
}'
version=7" -d'
{
"doc": {
"name" : "update new name"
}
}'

3、使用upsert操作,如果数据不存在则执行upsert部分(插入操作),否则执行更新操作

curl -XPOST "http://192.168.99.1:9200/productindex/product/12/_update" -d'
{
"doc":{
"name":"update new value"
},
"upsert" : {
"name" : "数据不存在执行插入操作",
"price" : 1
}
}'

或执行如下操作 (使用doc_as_upsert,如果文档不存在,则将doc的部分当做upsert的部分)

curl -XPOST "http://192.168.99.1:9200/productindex/product/13/_update" -d'
{
"doc":{
"name":"update new value"
},
"doc_as_upsert" : true
}'
"doc_as_upsert" : true
}'

四、高亮查询

1、插入一条新的数据

curl -XPUT "http://192.168.99.1:9200/productindex/product/29" -d'
{
"name" : "new name",
"desc" : "this is a desc field"
}'

2、匹配name字段中有has name的值或desc字段中有desc的值,并对匹配到的值进行高亮

curl -XGET "http://192.168.99.1:9200/productindex/product/_search" -d'
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "has name"
}
},
{
"term": {
"desc": {
"value": "desc"
}
}
}
]
}
},
"highlight": {
"pre_tags": "<span style=\"color:red\">",
"post_tags": "</span>",
"fields": {
"name" : {
"pre_tags": "<span style=\"color:blue\">",
"post_tags": "</span>"
},
"*" : { }
}
}
}'

五、删除数据

1、删除id=1的数据

curl -XDELETE "http://192.168.99.1:9200/productindex/product/1"

elasticsearch入门(简单的crud操作)的更多相关文章

  1. sitecore开发入门Sitecore的CRUD操作 - 第二部分

    在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...

  2. ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

    前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...

  3. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

  4. 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作

    这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...

  5. Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)

    一.简介 Spring Data  MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...

  6. hibernate入门-基本配置及简单的crud操作

    框架来说主要是需要写大量的配置文件,hibernate相比mybatis来说更强大,移植性更好: 1.类和数据库的映射配置:配置文件命名一般--类名.hbm.xml (user.hbm.xml),与实 ...

  7. ElasticSearch基础+文档CRUD操作

    本篇博客是上一篇的延续,主要用来将年前学习ES的知识点做一个回顾,方便日后进行复习和汇总!因为近期项目中使用ES出现了点小问题,因此在这里做一个详细的汇总! [01]全文检索和Lucene (1)全文 ...

  8. ELK学习实验004:Elasticsearch的简单介绍和操作

    一 集群节点 Elstaicsearch的集群是由多个节点组成都,通过cluster.name设置集权名称,比能切用与区分其他的集群,每个节点通过node.name指定节点 在Elasticsearc ...

  9. sitecore开发入门Sitecore的CRUD操作 - 第一部分

    在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作.我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对 ...

随机推荐

  1. Nacos注册中心之概要设计

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 前言 在之前的文章中分析了Nacos配置中心,配置中心的核心是配置的创建.读取.推送. 注册中 ...

  2. Linux的基础命令(一)

    目录: 一.Linux系统基础 1.shell      2. Linux命令的分类 二.Linux命令行 1.Linux命令行提示符      2.Linux通用命令行使用格式      3.Lin ...

  3. (3)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Cloud和Dubbo的区别及各自的优缺点

    ​ 我们先从 Nginx 说起,了解为什么需要微服务.最初的服务化解决方案是给相同服务提供一个统一的域名,然后服务调用者向这个域发送 HTTP 请求,由 Nginx 负责请求的分发和跳转. 这种架构存 ...

  4. expression动态构成

    http://blog.csdn.net/tastelife/article/details/7340205 http://blog.csdn.net/tastelife/article/detail ...

  5. awk的执行方式

    https://blog.csdn.net/fengyuanye/article/details/82858863 awk执行有三种形式: 1.直接以命令行来执行,        语法形式为:awk  ...

  6. POJ题目 1003Hangover(叠放纸牌)

    POJ 1003 叠放纸牌 描述 您可以将多张纸牌悬在桌子上多远?如果您有一张卡,则可以创建一个最大长度为卡长的一半.(我们假设这些卡片必须垂直于桌子.)使用两张卡片,您可以使最上面的卡片悬垂在底部的 ...

  7. 低代码+RPA+AI,能否让ERP焕发下一春?

    从2004年开始,国内ERP项目的实施便在各大企业热火朝天地展开,2014年,国内大中型企业已经基本完成了ERP系统的普及.ERP已经在大中型企业中成为不可或缺的关键信息系统.企业核心业务的流转与管控 ...

  8. photoshop CS6打不开提示请卸载并重新安装该程序

    运行Photoshop.exe时,提示错误: 解决方案: 以管理员身份运行该exe文件

  9. yum 安装 php 环境

    如此简单 第一步: sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7. ...

  10. P4100-[HEOI2013]钙铁锌硒维生素【矩阵求逆,最大匹配】

    正题 题目链接:https://www.luogu.com.cn/problem/P4100 题目大意 给出\(n\)个线性无关的向量\(A_i\),然后给出\(n\)个向量\(B_i\),求一个字典 ...