ElasticSearch 中 DSL 高级检索 (Query)
QueryDSL: 特定领域语言查询 传递数据 请求体中使用 json 的形式传递
requestBody 的形式
Get /索引名/类型名/_search
{
"query":{"match_all":{}}//查询所有
"size":20 //指定展示的条数
"from":0 //从第几条开始展示 1--0 2---1
"sort":[
{
"age":{
"order":"asc 升|desc"
}
}
]
}
[](()二、DSL 高级检索(Query)
===================================================================================
[](()0. 查询所有(match_all)
match_all 关键字: 返回索引中的全部文档
GET /ems/emp/_search
{
"query": { "match_all": {} }
}
[](()1. 查询结果中返回指定条数(size)
size 关键字 : 指定查询结果中返回指定条数。 默认返回值 10 条
GET /ems/emp/_search
{
"query": { "match_all": {} },
"size": 1
}
[](()2. 分页查询(from)
from 关键字 : 用来指定起始返回位置,和 size 关键字连用可实现分页效果
GET /ems/emp/_search
{
"query": {"match_all": {} 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 },
"sort": [
{
"age": {
"order": "desc"
}
}
],
"size": 2,
"from": 1
}
[](()3. 查询结果中返回指定字段(_source)
_source 关键字 : 是一个数组,在数组中用来指定展示那些字段
GET /ems/emp/_search
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}
[](()4. 关键词查询(term)
term 关键字 : 用来使用关键词查询
GET /ems/emp/_search
{
"query": {
"term": {
"address": {
"value": "北京"
}
}
}
}
#1、只对 text 类型的数据进行分词
integer.keyWard lang double boolean ip 类型都不参与分词
#2、标准分词器分词时对中文单字分词 对英文单词分词
NOTE1: 通过使用 term 查询知 ES 中默认使用分词器为标准分词器(StandardAnalyzer),标准分词器对于英文单词分词,对于中文单字分词 。
NOTE2: 通过使用 term 查询得知,在 ES 的 Mapping Type 中 keyword , date ,integer, long , double , boolean or ip 这些类型不分词 ,只有 text 类型分词 。
关键字查询底层实现原理
[](()5. 范围查询(range)
range 关键字 : 用来指定查询指定范围内的文档
#range 范围查询 根据年龄搜索 0-10 等价于关系型数据库的 betweend--and
gte:大于等于 gt:大于 lt:小于 lte:小于等于
GET /ems/emp/_search
{
"query": {
"range": {
"age": {
"gte": 0,
"lte": 10
}
}
}
}
[](()6. 前缀查询(prefix)
prefix 关键字 : 用来检索含有指定前缀的关键词的相关文档
前缀查询(prewfix) like "x%"
GET /ems/emp/_search
{
"query": {
"prefix": {
"address": {
"value": "北"
}
}
}
}
[](()7. 通配符查询(wildcard)
wildcard 关键字 : 通配符查询 ? 用来匹配一个任意字符 * 用来匹配多个任意字符
#通配符查询(wildcard)
?匹配一个字符 *可以匹配多个字符
GET /ems/emp/_search
{
"query": {
"wildcard": {
"content": {
"value": "re*"
}
}
}
}
?匹配一个字符
GET /ems/emp/_search
{
"query": {
"wildcard": {
"content": {
"value": "sprin?"
}
}
}
}
[](()8. 多 id 查询(ids)
ids 关键字 : 值为数组类型,用来根据一组 id 获取多个对应的文档
#多 id 查询
GET /ems/emp/_search
{
"query": {
"ids": {
"values": ["dPMrnX0BfC_D9Fr1AcjP","c_MrnX0BfC_D9Fr1AcjP"]
}
}
}
[](()9. 模糊查询(fuzzy)
fuzzy 关键字 : 用来模糊查询含有指定关键字的文档
#fuzzy 模糊查询 用来模糊查询含有指定关键字的文档
#规则:
搜索关键词长度为 2 不允许存在模糊
GET /ems/emp/_search
{
"query": {
"fuzzy": {
"content": "北京"
}
}
}
搜索关键词长度为 3~5 允许一次模糊 把 mvc 写成 mvx
GET /ems/emp/_search
{
"query": {
"fuzzy": {
"content":"mvx"
}
}
}
搜索关键词长度为 5 以上 允许最大模糊数 2 个 将 spring 写成 xprinx
GET /ems/emp/_search
{
"query": {
"fuzzy": {
"content": "xprinx"
}
}
fuzzy 模糊查询 最大模糊错误 必须在 0-2 之间
评论