下面是关于“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
的索引,并向该索引中添加一条记录,记录包括两个字段 title
和 content
。其中 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
, age
和 gender
。其中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技术站