Elastic分布式搜索,如何对文档数据进行增删改查管理?
发布于 作者:苏南大叔 来源:程序如此灵动~
Elastic Search
分布式搜索引擎,本文说的是索引的文档管理。更通俗的理解的话,就是对应的是关系数据库中的一条条数据。更接近于大家最常操作的数据增删改查操作。理解上也更加容易接受。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10
,elasticsearch@8.17.1
,kibana@8.17.1
。本文的内容中,都使用kibana
执行elasticsearch
最原始的接口操作。相比较前一篇文章,本文操作的对象是数据文档。
前文回顾
elastic search
的安装及配置,参考文章:
kibana
的安装及配置:
- https://newsn.net/say/kibana.html
- https://newsn.net/say/elastic-kibana.html
- https://newsn.net/say/elastic-kibana-2.html
elastic search
开启集群:
对分片Shards
和副本Replicas
概念的理解:
对elastic search
索引表的增删改查操作:
准备索引
本文要操作的索引名是sn_index
,建立索引的语句如下:
DELETE /sn_index
PUT /sn_index
{
"mappings": {
"properties": {
"question": {
"type": "text"
},
"answer": {
"type": "text"
},
"point":{
"type": "integer"
}
}
}
}
重点就是最后一个成员后面的逗号,不能存在。
添加新文档
指定id
的话,则添加或修改同一个文档,并且修改_version
。
POST /sn_index/_doc/1
{
"question": "苏南大叔是谁?",
"answer": "秘密",
"coin": 5
}
不指定id
的话,则不断添加新的随机id
文档。
POST /sn_index/_doc
{
"question": "苏南大叔是谁?",
"answer": "秘密",
"coin": 5
}
修改文档
修改文档和新增文档差不多,指定好文档的id
后,指明操作为_update
即可。
POST /sn_index/_update/1
{
"doc": {
"answer": "这是个秘密",
"coin":10
}
}
删除文档
DELETE /sn_index/_doc/1
查询文档
这个查询部分非常复杂,不是一天两天能讲清楚的事情。这里,先做简单的查询。
GET /sn_index/_doc/1
模糊匹配
POST /sn_index/_search
{
"query": {
"match": {
"question": "大叔"
}
}
}
这里有待再次考证确认,待续。
and查询
POST /sn_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "question": "大叔" }},
{ "match": { "answer": "秘密" }}
]
}
}
}
or查询
POST /sn_index/_search
{
"query": {
"bool": {
"should": [
{ "match": { "question": "大叔" }},
{ "match": { "answer": "秘密" }}
]
}
}
}
not查询
POST /sn_index/_search
{
"query": {
"bool": {
"must_not": [
{ "match": { "question": "大叔" }},
{ "match": { "answer": "秘密" }}
]
}
}
}
范围查询
POST /sn_index/_search
{
"query": {
"range": {
"coin": {
"gt": 3
}
}
}
}
结语
本文只能算是基础的增删改查,可以看到:elastic
的查询(_search
)功能,实在是很难用很难写,很难理解,编程效率不咋地。所以,后续官方又出品了其它的查询方式。这里做伏笔,后续再讲述。
更多elastic
经验文章,请点击苏南大叔的博客文章:


