ElastaicSearch 查询

news/2024/10/31 3:30:28/

match_all:匹配所有
match:分词单个匹配 【分词包含query,就可以被检索到,类似contains包含】
multi_match:分词多个匹配 【任何一个分词包含query,就可以被检索到】
term:全词单个匹配
terms:全词多个匹配
bool:组合查询
range:范围查询
aggs:聚合查询
query可以理解为SQL里面的where

1.1 查询全部

可以通过以下两种方式查询所有数据
下面两种查询完全等价

POST  索引/_search
{"query": {"match_all": {}}
}
GET 索引/_search

1.2 匹配查询

POST 索引/_search
{"query": {"match": {"name": "收藏"}}
}

1.3 字段匹配查询

POST 索引/_search
{"query": {"multi_match": {"query": "test", "fields": ["name", "tag"]}}
}

1.4 关键字精确查询

单个匹配

GET /索引/_search
{"query": {"term": {"id" : 1229}}
}

多个匹配

GET /索引/_search
{"query": {"terms": {"id" : [1229, 2338]}}
}

1.5 指定查询字段

只返回_source指定的字段

GET /索引/_search
{"query": {"match_all": {}}, "_source": ["id", "name"]
}

1.6 过滤字段

"excludes”:指定排除字段
“Includes”:指定查询字段

GET /索引/_search
{"query": {"match_all": {}}, "_source": {"excludes": ["id", "name"]}
}

1.7 组合查询

Bool 前置条件字段
Must ==
must_not !=
should or

GET /索引/_search
{"query": {"bool": {"must": [{"match": {"price" : 29}},{"match": {"name" : "3.9收藏test"}}]}}
}

1.8 范围查询

Range 潜质查询条件
Gt >
Gte >=
Lt <
lte <=

GET /索引/_search
{"query": {"range": {"price": {"gte": 10,"lte": 20}}}
}

1.9 模糊查询

[fuzziness]编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。 这些更改可以包括:

  • 更改字符(box→fox)
  • 删除字符(black→lack)
  • 插入字符(sic→sick)
  • 转置两个相邻字符(act→cat)
GET /索引/_search
{"query": {"fuzzy": {"name": {"value": "藏收", "fuzziness": 2}}}
}

1.10 排序

sort 前置字段
Desc 降序
asc 生序

GET /索引/_search
{
"query": {"match_all": {}},"sort": [{"price": {"order": "desc"}},{"age": {"order": "desc"}}]
}

1.11 分页查询

  • from:当前页的起始索引,默认从0开始, from = (pageNum - 1) * size,页数从第一页开始
  • size:每页显示多少条
GET /索引/_search
{
"query": {"match_all": {}},"from": 0,"size": 2
}

1.12 聚合操作(博大精深,还有很多种)

stats聚合,对某个字段一次性返回count,max,min,avg和sum五个指标

  • stats_aggs:聚合名称,任意
  • stats:聚合种类,其中指定需要聚合字段
  • Price:索引的其中一个字段
GET /索引/_search
{"aggs": {"state_aggs": {"stats": {"field": "price"}}}
}

结果:
{
…,
“aggregations” : {
“stats_aggs” : {
“count” : 5,
“min” : 2.0,
“max” : 5.0,
“avg” : 3.4,
“sum” : 17.0
}
}
}

示例:
Size 表示输出多少个

GET /索引/_search
{"query": {"term": {"name": {"value": "test"}}},"sort": [{"price": {"order": "desc"}}],"aggs": {"group": {"terms": {"field": "price","order": {"_count": "desc"}, "size": 10}}}
}

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

相关文章

JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述)

J2EE已经成为开发商创建电子商务应用的事实标准。正是认识到J2EE平台作为一种可扩展的、全功能的平台&#xff0c;可以将关键的企业应用扩展到任何Web浏览器上并可适合多种不同的Internet数据流、可连接到几乎任何一种传统数据库和解决方案、使企业经理根据多家企业所提供的产品…

QML信号与信号槽实践指南:轻松掌握现代软件开发的关键技术

这里写目录标题 &#xff08;一&#xff09;QML简介1.1 QML概述1.2 QML的基本语法1.3 QML与C的交互 &#xff08;二&#xff09;QML信号基本概念2.1 QML中的信号2.2 QML信号的作用与优势 &#xff08;三&#xff09;QML信号槽基本概念3.1 QML中的槽3.2 QML信号槽的使用与实践 &…

石头科技2022年营收实现双位数增长,以技术实力打响创新价值战

近日&#xff0c;石头科技披露了2022年度财务报告&#xff0c;报告显示&#xff0c;在在较大内外部压力下&#xff0c;石头科技2022年营收依然实现双位数增长&#xff0c;且境内外销售收入平稳增长。 该公司在近年来不断完善其产品矩阵&#xff0c;目前已推出手持无线吸尘、商…

Java 反射浅析与使用

获取Class对象 加载class的方式 通过Class.forName(className) className&#xff1a;全类名(类包名类名)通过类名.class方法获取通过对象的getClass()方法获取 Class<?> aClass Class.forName("com.hww.test.Info");System.out.println("Class.forNa…

Word控件Spire.Doc 【文本框】教程(1):如何在 C 语言中设置 Word 文本框的内部边距

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

dangerousRemoteUrlIpcAccess

问题描述&#xff1a; 在使用Tauri窗口加载外部链接时&#xff0c;需要也能继续使用Tauri API与Rust交互。按照官方发布通告中的代码添加配置&#xff1a; "security": {"dangerousRemoteUrlIpcAccess": [ { "windows": ["main", &qu…

复旦微的 JFM7K325T 国产化设计资料(PCIE711)

板卡概述 PCIE711 是一款基于 PCIE 总线架构的高性能数据预处理 FMC载板&#xff0c;板卡采用复旦微的 JFM7K325T FPGA 作为实时处理器&#xff0c;实现 各个接口之间的互联。该板卡可以实现 100%国产化。 板卡具有 1 个 FMC&#xff08;HPC&#xff09;接口&#xff0c;1 路…

设计模式——代理模式(静态代理、JDK动态代理、CGLIB动态代理)

是什么&#xff1f; 如果因为某些原因访问对象不适合&#xff0c;或者不能直接引用目标对象&#xff0c;这个时候就需要给该对象提供一个代理以控制对该对象的访问&#xff0c;代理对象作为访问对象和目标对象之间的中介&#xff1b; Java中的代理按照代理类生成时机不同又分…