首页 > 其他分享 >ElasticSearch restful语法

ElasticSearch restful语法

时间:2024-11-16 09:09:59浏览次数:1  
标签:查询 语法 索引 ElasticSearch query 文档 POST restful match

ElasticSearch基础学习

1. Elasticsearch 的基本概念

  • Index(索引):相当于数据库中的表,存储一类文档。
  • Document(文档):索引中的一条记录,使用 JSON 格式表示。
  • Type(类型):文档的分类,Elasticsearch 7.x 之后已不再推荐使用。
  • Field(字段):文档中的键值对。

2. 常用的 CRUD 操作

2.1 创建索引

PUT /my_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "date": { "type": "date" },
      "content": { "type": "text" }
    }
  }
}

注意:一旦创建索引库,对应的mapping结构不能修改,但是可以添加新的字段,以下是添加新字段操作:

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": ""
    }
  }
}

每个字段的子属性有以下几种:

type:字段数据类型,常见的简单类型有:
字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
数值:long、integer、short、byte、double、float
布尔:boolean
日期:date
对象:object
index:是否创建索引(即倒排索引),默认为true(可参与搜索)
analyzer:使用哪种分词器(跟text类型结合使用)
properties:该字段的子字段

2.2 添加文档

POST /my_index/_doc/1
{
  "title": "My First Document",
  "date": "2023-10-01",
  "content": "This is the content of the document."
}

2.3 获取文档

GET /索引名/_doc/文档id

2.4 删除文档

DELETE /索引名/_doc/文档id

2.5 更新文档

更新文档有两种,全量修改和增量修改

  1. 全量修改,是将原来的文档删除,然后增加一个相同id的文档,写法与添加文档相同
  2. 增量修改。如下,这里的更新字段只会匹配原来文档中已存在的字段。
POST /索引名/_doc/索引id/_update
{
  "doc": {
  	"更新字段": "更新内容"
  }
}

3. 查询文档

term&terms查询

termterms 查询用于查找与指定值完全匹配的文档,精确匹配,通常用于非分析字段(如 keyword 类型或数值类型)。

POST /索引库/_search
{
  "query": {
    "term": {
      "field_name": "value"
    }
  }
}

terms 查询允许你指定多个值,匹配字段中的任何一个值。它用于查找包含任意指定值之一的文档。

POST /索引库/_search
{
  "query": {
    "terms": {
      "field_name": ["value1", "value2", "value3"]
    }
  }
}

match查询

match本质是多个term查询的上层封装。match会识别字段类型,如果是可以分词的("text")就采用分词方式查询,如果是不分词("keyword"或数值类型)就采用精确匹配。

查询所有

POST /test/_search
{
  "query": {
    "match_all": {}
  }
}

对于普通的match,match中字段常用的属性。

"query": 需要匹配的内容,
"operator": 是OR匹配还是AND匹配
"fuzziness": "AUTO" 模糊查询,允许一定的拼写错误
POST /test/_search
{
  "query": {
    "match": {
      "field": "Second content"
    }
  }
}

上面的是默认写法,如果不做其他要

multi_match

多个字段匹配同一内容

POST /test/_search
{
  "query": {
    "multi_match": {
      "query": "content",
      "fields": [field1,field2]
    }
  }
}

其他查询

prefix查询

fuzzy模糊查询,

wildcard通配查询(相当于Mysql的like查询,可以加通配符),

range范围查询,只针对数值类型

regexp正则表达式查询

深分页

ES对用from+size这种方法的查询是有限制的,两者之和不能超过10000,所以要使用Scroll。

  • from + size: 适合小数据集的简单分页。
  • Scroll: 适合大数据集的批量处理,且性能更优。

复合查询

将多个条件组合起来

must : 在里面的条件都要满足,相当于and

must_not: 在里面的条件都不要满足,相当于not

should:在里面的条件满足其中一个,相当于or

# 班级为1,2,3中总分为100分的且家乡在北京的人
POST /test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "class":1
        },
        {
          "class":2
        },
        {
          "class":3
        }
      ],
      "must": [
        {
          "total_score" : 100
        },
        {
          "city": "beijing"
        }
      ]
    }
  }
}

高亮查询

POST /test/_search
{
  "query": {
    "match": {
      "content": "content"
    }
  },
  "highlight": {
    "fields": {
      "content": {}
    },
    "pre_tags": "<font color='red'>", 
    "post_tags": "</font>"
  }
}

标签:查询,语法,索引,ElasticSearch,query,文档,POST,restful,match
From: https://www.cnblogs.com/LIang2003/p/18549004

相关文章

  • C++语法学习整理
    目录1、move与forwardmoveforward2、左值和右值左值右值引用和值类别之间的关系3、1、move与forwardmove语法形式:std::move<T>(t),T是要转换的对象的类型(通常可以通过模板参数推导自动确定),t是要被转换(移动)的左值对象;应用场景:资源所有权转移1)容器元素移动:当需要高效地将一......
  • 【语法】宾语
    宾语类型名词或名词短语:当动词需要一个具体的对象或事物作为其行为的目标或接受者时,通常使用名词或名词短语作宾语。例如:“Iateanapple.”(我吃了一个苹果。)这里的“anapple”是名词短语,作为“ate”的宾语。代词:代词用于代替前面提到的名词,以避免重复。当动词需要一......
  • Python小白学习教程从入门到入坑------第三十二课 生成器(语法进阶)
    目录一、生成器generator1.1生成器表达式1.1.1表达式一1.1.2表达式二二、可迭代对象、迭代器、生成器三者之间的关系2.1定义与特性2.2关系与区别一、生成器generator在Python中,生成器(Generators)是一种用于迭代对象的特殊类型函数。它们允许你生成一个序列......
  • Python小白学习教程从入门到入坑------第三十一课 迭代器(语法进阶)
    目录一、可迭代对象Iterable1.1可迭代对象的条件1.2for循环工作原理1.3isinstance()二、迭代器 Iterator2.1 __iter__() 和 __next__()2.2 可迭代对象&迭代器2.2.1定义与特性2.2.2 关系与转换2.2.3应用场景三、迭代器协议(了解即可)四、自定义迭代器类......
  • 18.api接口与restful规范
    1.main文件导入student接口启动2.setting文件配置数据库连接3.查询所有学生接口4.添加一个学生接口5.查询一个学生接口6.更新一个学生接口7.删除一个学生接口 ......
  • Elasticsearch:管理和排除 Elasticsearch 内存故障
    作者:来自Elastic StefNestor随着ElasticCloud提供可观察性、安全性和搜索等解决方案,我们将使用ElasticCloud的用户范围从完整的运营团队扩大到包括数据工程师、安全团队和顾问。作为Elastic支持代表,我很乐意与各种各样的用户和用例互动。随着受众的扩大,我看到了......
  • shodan 和 Google 语法
    shodan和Google语法shodanshodan作用shodan是一个网络空间测绘引擎,也可以叫做网络空间搜索引擎。可以用来搜索网络设备,主要用于信息收集。工作原理厂商在全球范围内的服务器上部署了很多扫描器,通过24小时不停地扫描相关的设备IP地址。优点:方便缺点:实时性差、消耗......
  • 理解REST与RESTful:它们有何不同?
    理解REST与RESTful:它们有何不同?在现代Web开发中,REST和RESTful是两个经常被提及的术语。虽然它们看起来相似,但实际上有着不同的含义。本文将详细探讨REST和RESTful的区别,以及它们在API设计中的应用。什么是REST?REST(RepresentationalStateTransfer,表述性状态转移)是一种软......
  • Visual DSD语法
    VisualDSD语法目录VisualDSD语法词法规则数字字母Integer整数Name名称String字符串Float浮点数Char字符注释保留关键词程序结构Directive指令Declarations声明Processes进程(或者叫过程)Species物种Value值VisualDSD|AndrewPhillipshttps://wwvh.lanzn.com/imBw......
  • 何为RESTful Web API?
    REST(RepresentationalState Transfer)是一种用于构建网络应用程序的架构风格,特别适用于WebAPI。RESTfulWebAPI是基于REST 原则设计的API,允许客户端与服务器之间进行交互。以下是 REST WebAPI的一些关键概念和特点:1.资源(Resources)在REST 中,所有的内容都被视为资......