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_match match上同时搜索多个字段 类似 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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wujiangwei567/article/details/87621881