Elasticsearch文档索引基本操作增删改查示例

下面是关于“Elasticsearch文档索引基本操作增删改查示例”的完整攻略:

背景简介

Elasticsearch是一个基于Lucene的搜索引擎,该引擎被用于全文搜索、结构化搜索、分析和存储数据。在Elasticsearch中,文档操作通常包括以下内容:文档的增加、删除、修改和查询。

文档索引操作

创建索引

在Elasticsearch中,要创建一个索引,可以使用以下语法:

PUT /index_name
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "properties": {
      "field_name_1": { "type": "text" },
      "field_name_2": { "type": "integer" }
    }
  }
}

其中,index_name为要创建的索引名称,可以根据需要自行指定;settings是该索引的一些设置,如在这里设置了 number_of_shards 等参数,表示该索引有一个主片;mappings是该索引的映射,定义了该索引中的所有字段,字段类型和属性等信息。

添加文档

在创建了索引后,我们就可以向该索引中添加文档了。下面是一个示例:

POST /index_name/_doc/1
{
  "field_name_1": "some_text",
  "field_name_2": 123
}

其中,_doc表示要添加的文档类型,1表示该文档的id,可以根据需要自行指定。文档的内容以JSON格式传递,在这里我们添加了一个名为 field_name_1 的文本字段和一个名为 field_name_2 的整数字段。

修改文档

要修改一个已有的文档,可以使用以下语法:

POST /index_name/_update/1
{
  "doc": {
    "field_name_1": "new_text",
    "field_name_2": 456
  }
}

其中,_update表示操作类型为更新,1表示要更新的文档的id。在 doc 字段中指定要修改的字段,这里我们将 field_name_1 修改为了 new_text,将 field_name_2 修改为了 456

删除文档

要删除一个已有的文档,可以使用以下语法:

DELETE /index_name/_doc/1

其中,_doc表示文档类型,1表示要删除的文档的id。

查询文档

在Elasticsearch中,文档查询可以使用多种方式,如全文搜索、词项查询、区间查询、过滤等等。以下是对于全文搜索的一个简单示例。

假设我们要在名为 index_name 的索引中搜索包含关键词 some_text 的文档,可以使用以下语法:

GET /index_name/_search
{
  "query": {
    "match": {
      "field_name_1": "some_text"
    }
  }
}

其中,_search表示操作类型为搜索。query字段指定了要查询的查询语句,在这里使用了 match 查询,表示匹配 field_name_1 中包含关键词 some_text 的文档。

示例说明

以下是第一个示例:

创建一个名为 test_index 的索引,并向该索引中添加一条记录,记录包括两个字段 titlecontent。其中 title 是一个字符串类型,content 是一个文本类型。

创建索引:

PUT /test_index
{
  "settings" : {
    "number_of_shards" : 1
  },
  "mappings" : {
    "properties" : {
      "title" : { "type" : "keyword" },
      "content" : { "type" : "text" }
    }
  }
}

向索引中添加记录:

POST /test_index/_doc/1
{
  "title" : "Test Document",
  "content" : "This is a test document."
}

查询记录:

GET /test_index/_search
{
  "query" : {
    "match" : {
      "title" : "Test"
    }
  }
}

以上示例演示了如何创建一个索引,向该索引中添加一条记录,然后使用match查询根据title查找名字中包含Test的记录。

以下是第二个示例:

使用bulk批量添加文档到Elasticsearch索引中。在这个例子中,我们要添加10个文档,每个文档有三个字段:name, agegender。其中name是一个字符串类型,age是一个integer类型,gender是一个字符串类型。

使用bulk批量添加文档:

POST /test_bulk/_bulk
{"index":{"_id":"1"}}
{"name":"Tom","age":18,"gender":"Male"}
{"index":{"_id":"2"}}
{"name":"Lucy","age":20,"gender":"Female"}
{"index":{"_id":"3"}}
{"name":"Jim","age":21,"gender":"Male"}
{"index":{"_id":"4"}}
{"name":"Lily","age":18,"gender":"Female"}
{"index":{"_id":"5"}}
{"name":"Peter","age":19,"gender":"Male"}
{"index":{"_id":"6"}}
{"name":"Linda","age":20,"gender":"Female"}
{"index":{"_id":"7"}}
{"name":"Jack","age":21,"gender":"Male"}
{"index":{"_id":"8"}}
{"name":"Merry","age":18,"gender":"Female"}
{"index":{"_id":"9"}}
{"name":"John","age":19,"gender":"Male"}
{"index":{"_id":"10"}}
{"name":"June","age":20,"gender":"Female"}

查询添加的文档:

GET /test_bulk/_search
{
  "query": {
    "match_all": {}
  }
}

以上示例演示了如何使用bulk API快速批量添加文档到Elasticsearch中,并在查询时使用match_all来查询所有文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Elasticsearch文档索引基本操作增删改查示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java Beanutils.copyProperties( )用法详解

    Java BeanUtils.copyProperties()用法详解 BeanUtils.copyProperties()是Apache Commons BeanUtils库中提供的一个方法,它可以将一个Java Bean的属性值拷贝到另一个Java Bean中。该方法提供了一个方便的方式来将两个不同对象之间的属性值进行复制。 方法签名 以下是BeanUt…

    Java 2023年5月20日
    00
  • spring无法引入注解及import org.springframework.web.bind.annotation.*报错的解决

    下面是关于“spring无法引入注解及import org.springframework.web.bind.annotation.*报错的解决”的完整攻略。 问题描述 当我们在Spring项目中引入注解或使用 org.springframework.web.bind.annotation.*包时,可能会出现以下问题:1. 编译时无法引入注解;2. 编译时报…

    Java 2023年5月19日
    00
  • Spring Boot Admin 添加报警提醒和登录验证功能的具体实现

    下面我来详细讲解Spring Boot Admin添加报警提醒和登录验证功能的具体实现。 1. 添加报警提醒 1.1 准备工作 首先,我们需要准备以下工作: 安装 Spring Boot Admin 安装 Spring Boot Admin Server Extensions 扩展 1.2 添加报警提醒功能 在 spring-boot-admin-serve…

    Java 2023年6月3日
    00
  • Java创建与结束线程代码示例

    创建线程是使用Java多线程的基本步骤之一,可以使用线程类或者实现Runnable接口的线程对象。结束线程可以使用stop方法,但因为此方法可能会导致不可预知的结果而被废弃,因此推荐使用条件退出方式停止线程。 以下是Java创建与结束线程的完整攻略: 创建线程 使用线程类 继承Thread类并实现run方法,run方法中包含当前线程的操作逻辑。然后创建线程对…

    Java 2023年5月18日
    00
  • 2019第十届蓝桥杯JavaB组省赛真题详解

    2019第十届蓝桥杯JavaB组省赛真题详解 题目描述 题目描述过于复杂,详细内容可见官网。 题目解析 第1~4题 相对简单,主要考察对Java语言基础的掌握程度。可以通过阅读Java编程思想或者其他Java语言相应教材来增强实力。 第5题 本题要求按照要求对字符串进行处理并输出,通过分割和拼接字符串,可以轻松实现。 示例1: 输入: hello LanQi…

    Java 2023年5月20日
    00
  • 关于Java跨域Json字符转类对象的方法示例

    下面我就针对“关于Java跨域Json字符转类对象的方法示例”的完整攻略,进行详细讲解,希望能够帮助到你。 1. 什么是跨域? 首先,我们需要明白什么是跨域。跨域是指在同一个浏览器中,一个网站的JavaScript代码试图去访问另一个网站的代码。 在Web安全领域中,浏览器出于安全考虑,禁止页面中的JavaScript代码访问其它域下的资源,包括Cookie…

    Java 2023年5月26日
    00
  • Java 数据库连接池c3p0 介绍

    关于Java数据库连接池c3p0介绍的详细攻略,请仔细阅读以下内容。 什么是连接池? 在Java开发过程中,数据库连接占用了许多资源,如果在每次请求时都新连接数据库会使系统负载非常高,而且打开和关闭数据库连接也需要一定的时间。所以,使用连接池可以有效减少系统开销和提高系统的响应速度。 连接池是管理数据库连接,使得多个用户之间可以共享一个或多个数据库连接。连接…

    Java 2023年5月20日
    00
  • Java中json与javaBean几种互转的讲解

    下面是“Java中json与javaBean几种互转的讲解”的详细攻略。 一、什么是JSON JSON全称为JavaScript Object Notation,它是一种轻量级的数据交换格式,与XML格式相比,JSON格式更加简洁、易读、易写,可以在不同编程语言之间进行数据传输,并可以存储和描述各类结构化数据。 JSON格式由键值对组成,其中键是一个字符串,…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部