elasticsearch学习笔记之三(详细查询)

本文介绍elasticsearch的查询细节

1. 简单查询

查询语句查询说明
/_search在所有索引的所有类型中搜索
/gb/_search在索引gb的所有类型中搜索
/gb,us/_search在索引gb和us的所有类型中搜索
/g*,u*/_search在以g或u开头的索引的所有类型中搜索
/gb/user/_search在索引gb的类型user中搜索
/gb,us/user,tweet/_search在索引gb和us的类型为user和tweet中搜索
/_all/user,tweet/_search在所有索引的user和tweet中搜索
/_search?size=5&from=10分页 size 结果数 默认10 from 跳过开始的结果数,默认0

GET /_all/tweet/_search?q=tweet:elasticsearch

下面语句查找name字段中包含"john"和tweet字段包含"mary"的结果。实际的查询只需要:

GET /_all/tweet/_search?q=+name:john++tweet:mary

2. 结构化查询DSL

实际查询中,往往比这复杂的多,需要用到 query DSL 结构化的查询语句,来发送请求体

详细参见 :https://es.xiaoleilu.com/054_Query_DSL/70_Important_clauses.html

查询关键词说明用例
term用于精确匹配哪些值{ “term”: { “date”: “2014-09-01” }}
terms多个值进行精确匹配{ “terms”: { “tag”: [ “search”, “full_text”, “nosql” ] } }
range范围查询{ “range”: { “age”: {“gte”: 20,“lt”: 30 } } }
exists/missing查找文档中是否包含指定字段或没有某个字段 类似于 IS_NULL{ “exists”: {“field”: “title” } }
bool用来合并多个条件must(and) /must_not(not)/should(or)
match_all查询所有文档{ “match_all”: {}}
match它指定了一个确切值,在遇到数字,日期,布尔值或者not_analyzed 的字符串时,它将为你搜索你给定的值 否则类似于like{ “match”: { “tag”:“full_text”}}
multi_matchmatch上同时搜索多个字段 类似 or…like{ “multi_match”: {“query”: “full text search”,“fields”: [ “title”, “body” ] } }

更多查询:https://dzone.com/articles/23-useful-elasticsearch-example-queries

3. 验证查询语句的正确性

验证正确性

GET /gb/tweet/_validate/query

解释查询语句的错误原因及位置

GET /_validate/query?explain

4. sql转换成es查询

可以下载 Elastic HD

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值