`

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'
{
  "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"
  }
}'

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
}'

四、高亮查询

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"

 

 

  • 大小: 172.1 KB
分享到:
评论

相关推荐

    《ElasticSearch入门到实战》电子书,从入门到进阶实战项目的教程文档,框架SpringBoot框架整合ES.zip

    2. **索引与文档**:学习 Elasticsearch 中的索引概念,理解如何创建、删除和操作索引,以及文档的 CRUD(创建、读取、更新、删除)操作。 3. **查询与过滤**:掌握 Elasticsearch 的查询语法,包括匹配查询、范围...

    es快速入门笔记,自我整理,共75节

    * 电商网站商品管理:使用Elasticsearch实现商品的CRUD(Create、Read、Update、Delete)操作。 * 多种搜索方式:Query String Search、Query DSL、Phrase Search、Highlight Search等。 五、Elasticsearch基础...

    elasticsearch RESTful搜索引擎-(java jest 使用[入门])

    1. **简单API**:Jest提供了简洁的API,用于执行各种Elasticsearch操作,如索引文档、搜索、更新等。 2. **异步与同步**:支持同步和异步执行操作,适应不同场景的需求。 3. **连接池管理**:内置连接池管理,优化...

    elasticsearch2.x离线api

    索引是Elasticsearch中存储数据的地方,这部分介绍了如何执行索引的创建、读取、更新和删除(CRUD)操作。 16. SearchAPIs(搜索APIs) Elasticsearch的搜索功能非常强大。用户可以通过URI搜索、请求体搜索和各种...

    elasticsearch基础知识,从小白到入门

    ### Elasticsearch基础知识,从小白到入门 #### 一、概念与背景 **搜索引擎基础:** - **倒排索引**:倒排索引是搜索引擎的核心技术之一,它将文档中的关键词与文档之间的对应关系建立索引,使得根据关键词快速...

    Elasticsearch-sgg

    **Elasticsearch 入门与实战** Elasticsearch(简称ES)是一款开源的全文搜索引擎,以其高效、可扩展和易用性在大数据分析和实时搜索领域广泛应用。它基于Lucene库构建,但提供了更高级别的分布式、RESTful风格的...

    elasticsearch 第一篇(入门篇)1

    安装完成后,可以通过命令行启动、停止服务,或者通过 RESTful API 对集群进行各种操作,包括查看和管理集群、节点、索引和类型的状态,执行 CRUD 操作,以及进行高级搜索功能如排序、分页、筛选、聚合和 JavaScript...

    elasticsearch-learning

    Elasticsearch,Kibana 和 CerebroLogstash 安装与导入数据第 3 章:Elasticsearch 入门基本概念(1):索引,文档和 REST API基本概念(2):节点,集群,分片及副本文档的基本 CRUD 与批量操作倒排索引入门通过...

    Elasticsearch.Net使用入门教程(1)

    `ESProvider`类的实现会使用Elasticsearch.Net客户端库,例如`IElasticClient`接口,来执行CRUD操作。这包括创建索引、插入文档、搜索等。在实际项目中,你需要根据需求配置客户端实例,连接到你的Elasticsearch集群...

    全文搜索引擎Solr与ElasticSearch入门至集群及项目实战(Solr+ES)

    本课程提供所有代码笔记...14、ElasticSearch下载安装(window以及linux下安装) 15、集群环境搭建 16、客户端Kibana安装与使用 17、集群管理插件head安装使用 18、java api 操作 ES 19、电商项目实战应用等等 ....

    Java进阶教程数据层全栈方案SpringData高级应用视频教程

    5.SpringData ElasticSearch实现CRUD操作 第九章 SpringData MongDB 1.SpringData MongDB简介 2.MongDB环境搭建 3.MongDB基础知识回顾 4.SpringData MongDB入门案例 5.SpringData MongDB实现CRUD操作 第十章 综合...

    Part-1-Intro-to-Elasticsearch-and-Kibana

    弹性堆栈系列入门教程 第1部分:Elasticsearch和Kibana简介 欢迎来到弹性堆栈的初学者速成课程! 此存储库包含在研讨会第1部分:Elasticsearch和Kibana简介中共享的所有... 用Elasticsearch和Kibana执行CRUD操作的初

    ElasticSerarch

    **Elasticsearch 入门详解** Elasticsearch(简称 ES)是一种基于 Lucene 的开源分布式搜索引擎,它提供了全文检索、分析和分布式存储的功能。ES 的设计目标是简单、可扩展和高可用性,广泛应用于日志分析、实时...

    SS2 入门简单示例

    这个"SS2 入门简单示例"应该是一个帮助初学者理解这三个框架如何协同工作的教程。下面我们将详细探讨这三个框架以及它们在实际开发中的应用。 **Struts 2**: Struts 2是一个基于MVC(Model-View-Controller)设计...

Global site tag (gtag.js) - Google Analytics