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

下面是关于“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文档索引基本操作增删改查示例

基础教程推荐