记录一下,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. Vue获取Abp VNext Token

    Abp VNext默认没公开访问Token的Api,但有个问题Cookie方式如果是手机或桌面程序不如Token方便 Axios默认是Json方式提交,abp登录需要使用application/x-w ...

  2. window server 2008 系统加固

    1.更改管理员账号: 开始->运行->compmgmt.msc(计算机管理)->本地用户和组->用户,右击Administrator账户并选择"重命名",并 ...

  3. asp.net 工具

    http://www.jb51.net/article/92465.htm 这篇文章列出了针对ASP.NET开发人员的有用工具. 工具 1.Visual Studio Visual Studio Pr ...

  4. 6步快速配置Tomcat环境变量(Win10)

    一.配置 tomcat环境变量之前先安装jdk和配置jdk的环境变量 1.首先右击我的电脑(此电脑),点击属性,或者也可以从控制面板上打开,如下图,找到系统点击高级系统设置: 2.然后进入系统属性界面 ...

  5. Oracle体系结构一

    总体结构分为三个部分:SGA,PGA,FILE文件 按功能分: 存储结构  存储结构对应关系  主要文件: 数据文件: 每个数据文件只与一个数据库相关联 一个表空间可以包含一个或者多个数据文件 一个数 ...

  6. 记一次docker compose的低级错误

    记一次docker compose的低级错误 问题 ​ 今天在学习dockercompose的时候,启动docker compose up,结果却出现异常 Error response from da ...

  7. jmeter 脚本录制方式详解

    关于jmeter脚本录制方式,主要分为第三方工具录制.jmeter本身代理方式录制以及人为手写脚本的三种方式.其中第三方工具录制主要有3种主流工具进行录制,badboy   BlazeMeter    ...

  8. 第三方api接口

    做为一个软件测试工程师,你要学习接口测试,需要练习,那么就要有调用的api,可以参考以下的文章. 国内7款API供应平台功能对比及详细介绍 https://blog.csdn.net/ishxiao/ ...

  9. 用Python基本库实现进度条

    用Python基本库实现进度条效果几个要点:1. \r,重置光标2. time.perf_counter,计算运行时间3. 用format控制输出格式 1 #progress bar2 2 #The ...

  10. 【月光宝盒get√】用时间置换空间,聊聊稀疏数组的那些事儿

    背景 数据结构是指带有结构特性的数据元素的集合.在数据结构中,数据之间通过一定的组织结构关联在一起,便于计算机存储和使用.从大类划分,数据结构可以分为线性结构和非线性结构,适用于不同的应用场景. 线性 ...