ElasticSearch语法总结

阅读: 评论:0

ElasticSearch语法总结

ElasticSearch语法总结

文章目录

  • 一、前言
  • 二、查询语句
    • 1.综合
      • <1>帮助
      • <2>查询所有
      • <3>查看集群健康信息
      • <4>查看集群中节点信息
      • <5>查看集群中的索引信息
    • 2.索引
      • <1>新增
      • <2>删除
      • <3>查询
    • 3.文档
      • <1>声明索引下的文档字段类型
      • <2>新增
        • - 新增时指定id
        • - 新增时不指定id【随机生成id】
      • <3>删除
      • <4>修改
        • - 根据id修改【全部字段】
        • - 根据id修改【单个字段】
      • <5>查询
        • - 根据id查询
        • - 查询全部
        • - 查询总数
        • - 分词查询
        • - 单条件查询
        • - 多条件查询【and】
        • - 多条件查询【or】
        • - 查询结果高亮显示
        • - 范围查询
        • - 分页查询
        • - 指定查询结果的返回字段
        • - 对查询结果排序
        • - 聚合查询
        • - 查询平均值


一、前言

  1. es是面向文档型数据库,一条数据就是一个文档,可以通过下面这张表与关系型数据库进行类比:
ESMysql
Index(索引)Database(数据库)
Type(类型:es7+已删除)Table(表)
Documents(文档)Row(行)
Field(字段)Column(列)
  1. 正排索引:id 建立索引,通过 id 查询数据。
    倒排索引: 用数据中的 关键词 建立索引,通过 关键词 查询id

二、查询语句

1.综合

<1>帮助

GET /_cat/health?help

<2>查询所有

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

<3>查看集群健康信息

GET /_cat/health?v

<4>查看集群中节点信息

GET /_cat/nodes?v

<5>查看集群中的索引信息

# 第一种
GET /_cat/indices?v
# 第二种(简化)
GET /_cat/indices?v&h=health,status,index

2.索引

<1>新增

PUT /book

<2>删除

DELETE /book

<3>查询

列出全部索引信息

GET /_cat/indices?v

3.文档

<1>声明索引下的文档字段类型

先创建索引

PUT /book
{"settings": {"number_of_shards": 5,"number_of_replicas": 1},"mappings": {"dynamic": "strict",           # 插入数据时,如果遇到不存在的字段,不新增字段,直接报错"properties": {"title": {"type": "text","index": true},"publisher": {"type": "keyword","index": true},"page": {"type": "text","index": false},"my_vector": {"type": "dense_vector","dims": 2}}}
}

ps:

  1. “type”: “text”
    文本类型【使用 match 检索时自动进行分词】
  2. “type”: “keyword”
    键值类型【使用 match 检索时不会进行分词】
  3. “index”: true
    建立索引【参与检索】
  4. “index”: false
    不建立索引【不参与检索】

<2>新增

- 新增时指定id
POST /book/_doc/1
{				   "title":"历史上的今天","created":"2018-12-25"
}
- 新增时不指定id【随机生成id】
POST /book/_doc
{				   "title":"历史上的今天","created":"2018-12-25"
}

<3>删除

根据id删除

DELETE /book/_doc/1	

<4>修改

- 根据id修改【全部字段】
# title 和 created 全部更新
PUT /book/_doc/1
{				   "title":"历史上的今天2","created":"2021-01-01"
}
- 根据id修改【单个字段】
# 仅更新 created 
POST /book/_update/1
{				   "doc": {"created":"2021-01-01"	}
}

<5>查询

- 根据id查询

查询 book 索引下 _id 为 1 的文档

# 写法1
GET /book/_doc/1	# 写法2
GET /book/_search
{"query": {"match": {"_id": 1}}
}

- 查询全部

查询 book 索引下的全部文档【默认返回前10000条】

# 写法1
GET /book/_search# 写法2
GET /book/_search
{"query": {"match_all": {}}
}# 写法3
GET /book/_doc/_search

- 查询总数

查询 book 索引下的文档总数

GET /book/_count

- 分词查询
GET /book/_search
{"query": {"match": {"title": "历史上的今天"}}
}

ps:

  1. match
    分词查询【检索 book 索引中 title 包含 历史、历史上、今天、历史上的今天 的数据】
  2. match_phrase
    不分词查询【检索 book 索引中 title 只包含 历史上的今天 的数据】

- 单条件查询

查询 book 索引下满足 title 包含 历史上的今天 的数据

# 推荐写法
GET /book/_search
{"query": {"match_phrase": {"title": "历史上的今天"}}
}# 不推荐写法
GET /book/_search?q=title:历史上的今天

- 多条件查询【and】

查询 book 索引下满足 title 包含 历史上的今天 and created=2018-12-20 的数据

GET /book/_search
{"query": {"bool": {"must": [{"match_phrase": {"title": "历史上的今天"}},{"match_phrase": {"created": "2018-12-20"}}]}}
}

- 多条件查询【or】

查询 book 索引下满足 title 包含 历史上的今天 or title 包含 历史上的今天2 的数据

GET /book/_search
{"query": {"bool": {"should": [{"match_phrase": {"title": "历史上的今天"}},{"match_phrase": {"title": "历史上的今天2"}}]}}
}

- 查询结果高亮显示

查询 book 索引中满足 title 包含 “历史” 的数据,并将检索结果中的历史俩字用<em>标签包裹

GET /book/_search
{"query": {"match_phrase": {"title": "历史"}},"highlight": {"fields": {"title": {}}}
}

ps:


- 范围查询

查询 book 索引下满足 price > 100 的数据

GET /book/_search
{"query": {"bool": {"filter": {"range": {"price": {"gt": 100.00}}}}}
}

ps:

  1. gt 大于
  2. gte 大于等于
  3. it 小于
  4. ite 小于等于

- 分页查询

分页查询 book 索引下的全部数据,查询第1页,每页2条数据

GET /book/_search
{"from": 0,"size": 2
}

- 指定查询结果的返回字段

查询 book 索引下的全部数据,仅返回 title 字段

GET /book/_search
{"_source": ["title"]		
}

- 对查询结果排序

查询 book 索引下的全部数据,以创建时间降序排序

GET /book/_search
{"sort": {"created": {"order": "desc"}}
}

ps:

  1. 升序 asc
  2. 降序 desc

- 聚合查询

对 book 索引下的 title 字段进行聚合查询

GET /book/_search
{"aggs": {"title_group": {"terms": {"field": "title.keyword","size": 10			}}},"size": 0		
}

ps:

  1. “title_group”: {
    操作名称【这名随便起】
  2. “terms”: {
    聚合操作
  3. “field”: “title.keyword”,
    对哪个字段聚合【字符串类型需要加.keyword】
  4. “size”: 10
    最大返回数
  5. “size”: 0
    不返回命中数据

- 查询平均值

对 book 索引下的 price 字段求平均值

GET /book/_search
{"aggs": {"price_avg": {"avg": {"field": "price"		}}},"size": 0		
}

ps:

  1. “price_avg”: {
    操作名称【这名随便起】
  2. “avg”: {
    求平均操作
  3. “field”: “price”
    对哪个字段求平均值
  4. “size”: 0
    不返回命中数据


本文发布于:2024-02-02 15:53:24,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170686040544838.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语法   ElasticSearch
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23