elasticsearch入门(简单的crud操作)
记录一下,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'_update" -d'
{
"doc": {
"name" : "update new name"
}
}'
{
"doc": {
"name" : "update new name"
}
}'
2、使用乐观锁version控制修改(防止在并发情况下数据修改有误)
后方的这个version的值为数据当前的版本号,如果es中这个数据的版本号发生了变化,则修改失败。
curl -XPOST "http://192.168.99.1:9200/productindex/product/1/_update?version=7" -d'version=7" -d'
{
"doc": {
"name" : "update new name"
}
}'
{
"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_as_upsert" : true
{
"doc":{
"name":"update new value"
},
"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操作)的更多相关文章
- sitecore开发入门Sitecore的CRUD操作 - 第二部分
在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...
- ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...
- 8天掌握EF的Code First开发系列之2 简单的CRUD操作
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...
- 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
一.简介 Spring Data MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...
- hibernate入门-基本配置及简单的crud操作
框架来说主要是需要写大量的配置文件,hibernate相比mybatis来说更强大,移植性更好: 1.类和数据库的映射配置:配置文件命名一般--类名.hbm.xml (user.hbm.xml),与实 ...
- ElasticSearch基础+文档CRUD操作
本篇博客是上一篇的延续,主要用来将年前学习ES的知识点做一个回顾,方便日后进行复习和汇总!因为近期项目中使用ES出现了点小问题,因此在这里做一个详细的汇总! [01]全文检索和Lucene (1)全文 ...
- ELK学习实验004:Elasticsearch的简单介绍和操作
一 集群节点 Elstaicsearch的集群是由多个节点组成都,通过cluster.name设置集权名称,比能切用与区分其他的集群,每个节点通过node.name指定节点 在Elasticsearc ...
- sitecore开发入门Sitecore的CRUD操作 - 第一部分
在本文中,讨论如何使用Sitecore.Data.Items.Item并对这些项执行CRUD(创建,读取,更新和删除)操作.我还将介绍如何使用Glass和Fortis类库进行相同的操作,这些操作都是对 ...
随机推荐
- jquery实现强制刷新
$('iframe.active').attr('src', $('iframe.active').attr('src'));
- 如何解决浮动元素高度塌陷---CSS
解决高度塌陷问题的方法: 方法一. //给父元素添加声明 overflow:hidden; 缺点:回隐藏溢出的元素: 方法二. 在浮动的元素下添加空div标签,并给该元素添加声明: clear:bot ...
- 微信小程序开发者工具更新后报很多错误
很有可能是不小心改动微信开发者工具的基础库版本了, 在文件 project.config.json 中 "libVersion": "2.9.3", 变成 &q ...
- 对帧率、I/P率、I帧间隔的理解
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒.通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比 ...
- kubeadm 命令简介
kubeadm 命令 kubeadm init 启动一个kubernetes主节点 kubeadm join 启动一个kubernetes工作节点并加入到集群中 kubeadm upgrade 更新一 ...
- strategy策略模式个人理解
首先了解策略模式的主要作用:能够把算法进行封装和动态传递: 可能听上去很抽象,我们引入一个方便理解的案例来解释: 给定一个数组 int[] array = {32,12,42,26,-23,0,-2, ...
- 记一次 .NET 某纺织工厂 MES系统 API 挂死分析
一:背景 1. 讲故事 这个月中旬,有位朋友加我wx求助他的程序线程占有率很高,寻求如何解决,截图如下: 说实话,和不同行业的程序员聊天还是蛮有意思的,广交朋友,也能扩大自己的圈子,朋友说他因为这个b ...
- 最详细STL(一)vector
vector的本质还是数组,但是可以动态的增加和减少数组的容量(当数组空间内存不足时,都会执行: 分配新空间-复制元素-释放原空间),首先先讲讲vector和数组的具体区别 一.vector和数组的区 ...
- 10.7 URI
URI: Uniform Resource Identifier 统一资源标识符 URL: Uniform Resource Locator 统一资源定位符 URN: Uniform R ...
- NOI2018屠龙勇士(扩展CRT + splay(multiset))
QWQ 一到假期就颓废 哎 今年新鲜出炉的NOI题,QwQ同步赛的时候写的,后来交了一发洛谷,竟然过了 首先 根据题目,我们很容易得到,假设对应每一条龙的剑的攻击力是\(atk\)的话 \[a_i-x ...