elasticsearch 常用语法汇总

时间:2024-04-29 17:55:02

文章目录

  • 前言
    • elasticsearch 常用语法汇总
      • 1. 创建索引
      • 2. 检索索引信息
      • 3. 删除索引
      • 4. 文档操作
        • 4.1. 对blog_new索引指定文档ID新增
        • 4.2. 对blog_new索引不指定文档ID新增,随机文档ID:
        • 4.3. 获取文档
        • 4.4. 更新文档
        • 4.5. 删除文档
      • 5. 查询
        • 5.1. 匹配查询
        • 5.2. 范围查询
        • 5.3. 布尔查询
        • 5.4. 分页查询

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


elasticsearch 常用语法汇总

1. 创建索引

PUT /<index_name>

示例:

PUT /<index_name>
{
  "settings": {
    "number_of_shards": 10,  // 将主分片数量
    "number_of_replicas": 1  // 根据需要设置副本数量
  }
}

在这里插入图片描述

2. 检索索引信息

GET /<index_name>

在这里插入图片描述

3. 删除索引

DELETE /<index_name>

在这里插入图片描述

4. 文档操作

测试:索引:blog_new

4.1. 对blog_new索引指定文档ID新增
POST /blog_new/_doc/文档ID
{
  "title": "jstat命令查看jvm的GC信息6",
  "content": "jstat命令查看jvm的GC信息99999999999923213",
  "author": "uuuuu",
  "publish_date": "2024-04-26",
  "tags": ["Elasticsearch", "Search", "Tutorial"]
}

在这里插入图片描述

4.2. 对blog_new索引不指定文档ID新增,随机文档ID:
POST /blog_new/_doc
{
  "title": "jstat命令查看jvm的GC信息6",
  "content": "jstat命令查看jvm的GC信息99999999999923213",
  "author": "uuuuu",
  "publish_date": "2024-04-26",
  "tags": ["Elasticsearch", "Search", "Tutorial"]
}

在这里插入图片描述

4.3. 获取文档
GET /<index_name>/_doc/<document_id>

在这里插入图片描述

4.4. 更新文档
POST /<index_name>/_update/<document_id>
{
  "doc": {
    "field1": "new_value1",
    "field2": "new_value2",
    ...
  }
}

在这里插入图片描述
获取文档:
在这里插入图片描述

4.5. 删除文档
DELETE /<index_name>/_doc/<document_id>

在这里插入图片描述

5. 查询

在Elasticsearch中,搜索文档通常涉及构建一个查询DSL,以指定要搜索的内容和搜索条件。查询DSL可以包含不同类型的查询,如匹配查询、范围查询、布尔查询,聚合查询等

5.1. 匹配查询
# 匹配查询
GET /blog_new/_search
{
  "query": {
    "match": {
      "author": "糖炒栗子"
    }
  },
  "size": 1000 //设置查询返回数
}

"match"查询:
1、作用:用于在文本字段中执行全文搜索,查找包含指定词语或短语的文档。
2、使用场景:适用于执行基于文本内容的搜索,比如在文章标题、正文或作者名中查找特定关键词。
3、示例:“match”: { “field_name”: “search_term” }
在这里插入图片描述

5.2. 范围查询
{
  "query": {
    "range": {
      "age": {
        "gte": 18,
        "lte": 30
      }
    }
  },
  "size": 1000 //设置查询返回数
}
  • “range”:指定进行范围查询。
  • “age”:指定要进行范围查询的字段名。
  • “gte”:表示大于或等于(Greater Than or Equal to),即最小值。
  • “lte”:表示小于或等于(Less Than or Equal to),即最大值。

示例:

GET /blog_new/_search
{
  "query": {
    "range": {
      "content": {
        "gte": "18",
        "lte": "300"
      }
    }
  },
  "size": 1000 //设置查询返回数
}

在这里插入图片描述

5.3. 布尔查询
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "Elasticsearch" }},
        { "range": { "publish_date": { "gte": "2022-01-01" }}}
      ],
      "must_not": [
        { "match": { "status": "draft" }}
      ],
      "should": [
        { "match": { "author": "John Doe" }}
      ],
      "minimum_should_match": 1
    }
  },
  "size": 1000 //设置查询返回数
}

在这个示例中,我们使用了布尔查询来构建复杂的查询逻辑,包括以下几个部分:

  • must:指定了所有这些条件都必须满足的查询子句。在示例中,文档的标题必须包含"Elasticsearch",并且发布日期必须在2022年1月1日之后。
  • must_not:指定了文档不能匹配的条件。在示例中,文档的状态不能是"draft"。
  • should:指定了一个可选条件,如果满足则增加文档的匹配分数。在示例中,作者是"John Doe"的文档将得到一定的优先级,但不是必须的。
  • minimum_should_match:指定了至少满足几个"should"查询条件,默认是0。在示例中,至少有一个"should"查询条件必须满足。

这个布尔查询的示例展示了如何利用布尔逻辑组合多个条件,以精确地过滤和排序文档。您可以根据实际需求修改查询条件和逻辑,以实现您想要的查询效果。
示例:

GET /blog_new/_search
{
  "query": {
    "bool": {
      "must":[{"match": {      "tags": "Elasticsearch"    }},
      {"range": {   "content": {"gte": "18","lte": "300"  }}}
      ],
      "must_not": [
        { "match": { "author": "yangzhenyu" }}
      ],
      "should": [
        { "match": { "author": "糖炒栗子" }}
      ],
      "minimum_should_match": 1
    }
  }
}

在这里插入图片描述

5.4. 分页查询

您可以使用"from"和"size"参数来实现分页:

  • "from"参数指定了查询结果中的偏移量,即从哪个文档开始返回结果。
  • "size"参数指定了每页返回的文档数。

例如,如果您想要获取第一页的结果,每页返回10个文档,您可以将"from"设置为0,"size"设置为10。如果想获取第二页的结果,您可以将"from"设置为10,"size"设置为10,以此类推。
以下是一个示例查询的JSON格式,其中包括了设置分页参数的部分。

{
  "query": {
    // 查询条件
  },
  "from": 0,  // 从第一个文档开始
  "size": 10  // 返回10个文档
}

示例:

GET /blog_new/_search
{
  "query": {
    "bool": {
      "must":[{"match": {      "tags": "Elasticsearch"    }},
      {"range": {   "content": {"gte": "18","lte": "300"  }}}
      ]
    }
  },
    "from":0,
    "size": 1000
}

在这里插入图片描述

GET /blog_new/_search
{
  "query": {
    "bool": {
      "must":[{"match": {      "tags": "Elasticsearch"    }},
      {"range": {   "content": {"gte": "18","lte": "300"  }}}
      ]
    }
  },
    "from":343,
    "size": 1000
}

在这里插入图片描述