ElasticSearch学习笔记(二)

ES基础指令

在了解ES是什么之后,首先肯定是要学习一下基础的操作指令,

一、索引操作

1.创建索引

在创建索引的时候可以指定字段类型,区别分段字段和精确字段

text:支持分词、模糊搜索、全文检索(适合文章内容、古籍正文)

keyword:不分词、只能精确匹配(适合作者、分类、状态)

    PUT /book
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "properties": {
      "title":{"type":"text"},
      "author":{"type":"keyword"},
      "content":{"type":"text"}
    }
  }
}

number_of_shards代表主分片,就是给当前索引开几份原始数据,number_of_replicas代表副分片,就是主分片的备份数量,上面代码的意思是开一份原始数据,没有副本,mapping代表着字段映射,等价于MySQL建表时写name varchar(20)这种感觉,后面的类型就是上面的说的分不分词的类型

2.查看索引

查看索引就是类似MySQL中查看数据库的意思

GET /book

3.删除索引

DELETE /book

二、文档CRUD基础操作(文档就是类似于MySQL中的一条数据)

1.新增文档(指定ID)

PUT /book/_doc/1
{
  "title":"论语",
  "author":"孔子",
  "content":"学而时习之,不亦说乎"
}

与上面的 PUT /book相比多了_doc/1,_ doc代表文档类型,告诉ES我要操作文档数据,1代表id

2.新增文档

POST /book/_doc
{
  "title":"道德经",
  "author":"老子",
  "content":"道可道,非常道"
}

3.根据ID查询单条数据

GET /book/_doc/1

4.全量修改(覆盖整条数据)

PUT /book/_doc/1
{
  "title":"论语修订版",
  "author":"孔子",
  "content":"学而时习之,不亦说乎"
}

5.局部修改(只更新指定字段)

POST /book/_update/1
{
  "doc":{
    "title":"论语新版"
  }
}

6.删除文档

DELETE /book/_doc/1

三、核心检索指令

1.查询全部数据

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

2.分词模糊查询

GET /book/_search
{
  "query": {
    "match": {
      "content": "学而"
    }
  }
}

3.精确查询

GET /book/_search
{
  "query": {
    "term": {
      "author": "孔子"
    }
  }
}

4.多字段同时查询

GET /book/_search
{
  "query":{
    "multi_match":{
      "query":"论语",
      "fields":["title","content"]
    }
  }
}

5.多条件组合查询(bool,业务核心)

must:必须满足(等价于 and)

should:满足其一即可(等价于 or)

must_not:一定不满足(等价于 not)

GET /book/_search
{
  "query":{
    "bool":{
      "must":[
        {"match":{"content":"之"}}
      ],
      "should":[
        {"term":{"author":"孔子"}}
      ]
    }
  }
}

6.分页 + 排序查询

from:起始下标,size:每页条数

{
  "from":0,
  "size":10,
  "sort":[
    {"_id":"desc"}
  ]
}

7.关键词高亮查询

GET /book/_search
{
  "query":{
    "match":{"content":"学而"}
  },
  "highlight":{
    "fields":{
      "content":{}
    }
  }
}

对content指定的区域进行了高亮操作

四、IK分词器

  • ik_max_word:细粒度拆分,拆分所有可能词语,检索覆盖率高
  • ik_smart:粗粒度智能拆分,结果更简洁
GET /_analyze
{
  "analyzer":"ik_max_word",
  "text":"经史子集翰林院"
}

GET /_analyze
{
  "analyzer":"ik_smart",
  "text":"经史子集翰林院"
}

以上就是ES的基础操作的代码了,这些必须要记住,否则集成到项目中的时候就会不知道用哪些方法,非常麻烦。

posted @ 2026-08-21 19:56  霜华序  阅读(13)  评论(0)    收藏  举报