ES开箱操作

news/2024/11/24 23:31:51/

文章目录

  • ES开箱使用
    • 数据类型
    • ES RESTful API
    • CRUD
      • 添加
      • 指定字段索引(创建规则)并映射字段类型
        • 获取建立的规则
      • 删除
      • 修改
        • put覆盖
        • 使用post的update
      • 查询
        • 简单条件查询
        • 查询匹配match
        • 多条件查询(bool)
        • 匹配数组:query
        • 精确查询item(完整词查询,不可分)
        • 高亮查询highlight
        • 自定义前后缀
        • 查询DSL(条件语句)
        • 指定搜索的字段`fields`
        • 过滤
        • 无需查询即可进行过滤
    • 过滤器
      • bool查询
        • must:返回的文档必须满足must子句的条件,并且参与计算分值
        • filter:返回的文档必须满足filter子句的条件。但是不会像Must一样,参与计算分值。
        • should
        • must_not
    • text VS keyword
    • get _cat/xxx获取当前更多信息
    • 常用命令

ES开箱使用

数据类型

数据类型
字符串类型text、keyword
数值类型long、integer、short、byte、double、float、half float、scaled float
日期类型date
布尔值类型boolean
二进制类型binary

ES RESTful API

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

  • 部件名作用VERB:HTTP方法 \ 谓词GETPOSTPUTHEAD 或者 DELETE
  • PROTOCOL:http 或者 https(如果你在 Elasticsearch 前面有一个 https 代理)
  • HOST:ES集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点
  • PORT:运行 Elasticsearch HTTP 服务的端口号,默认是 9200 。
  • PATH:API 的终端路径(例如 _count 将返回集群中文档数量)。
    • Path 可能包含多个组件,例如:_cluster/stats 和 _nodes/stats/jvm 。
  • QUERY_STRING:任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读)
  • BODY:一个 JSON 格式的请求体 (如果请求需要的话)
# 计算集群中文档的数量
curl -X GET 'http://localhost:9200/_count?pretty' -d '
{"query": {"match_all": {}}
}
'# Kibana中
GET /_count?pretty
{"query": {"match_all": {}}
}
  • pretty:美化输出(_source字段不会被美化,它的样子与我们输入的一致。)

CRUD

添加

PUT\POST /索引名/类型名(新版本逐步废弃,默认类型_doc代替)/文档ID
{请求体
}

索引为 db(SQL数据库)类型为 user(SQL Table) 的数据库中插入一条 id 为 1(SQL row?) 的一条数据(拥有 username/password/age 三个属性的实体)。

POST /db/user/1
{"username": "wmyskxz1","password": "123456","age": "22"
}PUT /test3/_doc/1
{"name": "流柚","age": 18,"birth": "1999-10-10"
}

PS:PUT如果漏了一些信息,原始信息就会丢失,故现在一般使用POST来更新索引。

指定字段索引(创建规则)并映射字段类型

PUT /test2
{"mappings": {"properties": {"name": {"type": "text"},"age":{"type": "long"},"birthday":{"type": "date"}}}
}

获取建立的规则

GET test2

删除

DELETE /db/user/1

修改

put覆盖

PUT /db/user/1
{"username": "wmyskxz3","password": "123456","age": "22"
}

使用post的update

  • version不会改变
  • 不会丢失字段
  • 注意doc
POST /test3/_doc/1/_update
{"doc":{"name" : "post修改,version不会加一","age" : 2}
}

查询

GET /db/user/1
GET <index>/<type>/_search

简单条件查询

GET /test3/_doc/_search?q=name:流柚

查询匹配match

  • match:匹配
  • _source:过滤字段
  • sort:排序
  • from:索引开始
  • size:限制显示个数
GET /blog/user/_search
{"query":{"match":{"name":"流"}},"_source": ["name","desc"],"sort": [{"age": {"order": "asc"}}],"from": 0,"size": 1
}

多条件查询(bool)

  • must: 相当于 and
  • should: 相当于 or
  • must_not: 相当于 not (… and …)
  • filter:过滤条件
  • range:按范围过滤
GET /blog/user/_search
{"query":{"bool": {"must": [{"match":{"sex": "女"}},{"match": {"name": "流"}}],"filter": {"range": {"age": {"gte": 1,"lte": 100}}}}}
}

匹配数组:query

多关键字查(空格隔开) :match 会使用分词器解析(先分析文档,然后进行查询)

GET /blog/user/_search
{"query":{"match":{"name":"流 水"}}
}

精确查询item(完整词查询,不可分)

term 直接通过 倒排索引 指定词条查询

GET /blog/user/_search
{"query":{"term":{"name":"流 水"}}
}

高亮查询highlight

GET blog/user/_search
{"query": {"match": {"name":"流"}},"highlight": {"fields": {"name": {}}}
}

自定义前后缀

GET blog/user/_search
{"query": {"match": {"name":"流"}},"highlight": {"pre_tags": "<p class='key' style='color:red'>","post_tags": "</p>","fields": {"name": {}}}
}

查询DSL(条件语句)

ElasticSearch自己基于JSON的域特定语言,可以在其中表达查询和过滤器。

GET /_search
{"query": {//Query DSL here"query_string": {"query": "kill"}}
}

命令行请求:

curl -X GET 'http://localhost:9200/db/user/_search?q=kill&pretty'curl -X GET 'http://localhost:9200/db/user/_search?pretty' -d '
{"query" :  {"query_string": {"query": "kill"}}
}
'

指定搜索的字段fields

fields:可用于指定要搜索的字段列表。如果不使用“fields”字段,ElasticSearch查询将默认自动生成的名为 “_all” 的特殊字段,来基于所有文档中的各个字段匹配搜索。

GET /_search
{"query": {"query_string": {"query": "ford","fields": ["title"]}}
}

过滤

  • filtered(废除)
    过滤的查询:具有两个属性 queryfilter
GET /_search
{"query": {"filtered": {"query": {"query_string": {"query": "drama"}},"filter": {# //Filter to apply to the query"term": {"year": 1962}}}}
}

条件过滤器:term

无需查询即可进行过滤

  • (废除)
GET /_search
{"query": {"filtered": {"query": {"match_all": {}},"filter": {"term": {"year": 1962}}}}
}
  • 使用常数分数查询
GET /_search
{"query": {"constant_score": {"filter": {"term": {"year": 1962}}}}
}

过滤器

bool查询

Bool查询对应Lucene中的BooleanQuery,它由一个或者多个子句组成,每个子句都有特定的类型。

must:返回的文档必须满足must子句的条件,并且参与计算分值

filter:返回的文档必须满足filter子句的条件。但是不会像Must一样,参与计算分值。

should

must_not

text VS keyword

text:支持分词全文检索,支持模糊、精确查询,不支持聚合、排序操作。最大支持的字符长度无限制,适合大字段存储。
keyword不进行分词直接索引,支持模糊、精确匹配,支持聚合、排序操作。keyword类型的最大支持的长度为32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果。

GET _analyze
{
"analyzer": "keyword",
"text": ["测试liu"]
}// keyword不会分词,即 测试liuGET _analyze
{
"analyzer": "standard",
"text": ["测试liu"]
}// 分为 测 试 liuGET _analyze
{
"analyzer":"ik_max_word",
"text": ["测试liu"]
}// 分为 测试 liu

get _cat/xxx获取当前更多信息

GET _cat/indices
GET _cat/aliases
GET _cat/allocation
GET _cat/count
GET _cat/fielddata
GET _cat/health
GET _cat/indices
GET _cat/master
GET _cat/nodeattrs
GET _cat/nodes
GET _cat/pending_tasks
GET _cat/plugins
GET _cat/recovery
GET _cat/repositories
GET _cat/segments
GET _cat/shards
GET _cat/snapshots
GET _cat/tasks
GET _cat/templates
GET _cat/thread_pool

常用命令

  • 集群的健康状态:GET _cluster/health
  • 查询集群中节点的信息:GET /_cat/nodesGET /_cat/nodes?v(?v 让kibana 输出逻辑模式即verbose模式的首字母)

http://www.ppmy.cn/news/501505.html

相关文章

实现以管理员权限打开window终端cmd,并在终端里执行多条指令的功能

本文实现以管理员权限打开window终端cmd&#xff0c;并在终端里执行多条指令的功能。 以挂载vhd虚拟盘、卸载vhd虚拟盘为例。 一、挂载vhd虚拟盘 C#工程 vhdAttach, 生成vhdAttach.exe&#xff0c;vhdAttach.exe的功能为&#xff1a;启动windows终端cmd.exe,读取attach-vhd.t…

内裤紧身还是宽松

紧一点的内裤&#xff0c;即使弹力很好穿起来并不舒服太紧的内裤&#xff0c;可能影响血液循环&#xff0c;不利于身体健康宽松的内裤内裤的功效除了保护&#xff0c;还有承托穿过大的内裤&#xff0c;松垮垮的没有什么承托作用可能皱在里面缩成一团&#xff0c;穿起来不舒服

一条破的裤子

橘子上有些磨损了&#xff0c;不小心一扯了&#xff0c;裂开了一个缝隙&#xff0c;孩子看见了&#xff0c;说不要穿破橘子出门啊&#xff0c;我说这个凉快&#xff0c;没事的。

裤子破了_裤子

裤子破了 So … I don’t post for two months, and when I do, it is for the sole purpose of showing you my pants. 所以……我两个月都没有发布信息&#xff0c;当我这样做时&#xff0c;它只是为了向您展示我的裤子。 翻译自: https://rachelandrew.co.uk/archives/2005…

男朋友的内裤旧了不要扔,关键时刻有大用......

1 女生没有运动内衣不用愁 翻翻衣柜总有办法 ▼ 2 孩子&#xff0c;你这家庭咋这么散装呢&#xff1f; ▼ 3 这个原地打滑的本领也是一门技术 ▼ 4 三轮车夫&#xff1a;我顶不住了...... ▼ 5 有空不仅可以一起洗澡 还可以一起拉屎 ▼ 6 哟&#xff01;哥们儿&…

啊破了

破700百分 还有100分就可以换奖品 嗯,不错不错!

百度云的“链接不存在或失效”怎么破?

哈哈&#xff0c;相信大家不管是领取干货资料还是通过百度云发送文档给伙伴&#xff0c;都会碰到一下问题&#xff1a; 你打开的文件已失效&#xff1b; 啊哦&#xff0c;你来晚了&#xff0c;分享的文件已经被取消了&#xff0c;下次要早点哟&#xff1b; 你所打开的链接不存在…