es | 索引 | 类型 | 文档 | 字段 |
---|---|---|---|---|
数据库 | 数据库 | 表 | 行 | 列 |
关键字 | 描述 |
---|---|
term/terms | 分组查询 |
range | 范围内查询 |
exists | 查看某个字段是否存在 |
ids | 根据id查询 |
match/match_all/match_phrase | 匹配查询 |
from | 分页查询 |
size | 指定大小 |
sort | 排序 |
_source | 制定检索结果输出的字段 |
script_fields | 允许我们通过一个脚本计算document中不存在的值 |
aggs | 基于搜索查询,可以嵌套聚合来组合复杂的需求 |
prefix | 指定前缀查询 |
wildcard | 通配符查询 |
fuzzy | 模糊查询 |
multi_match | 多字段查询 |
query_String | 多字段分词查询 |
查询时判断某个document是否包含某个具体的值,不会对被查询的值进行分词查询
单个字段属于某个值数组内的值
GET /moe_db/_doc/_search
{
"query": {
"terms": {
"name": [
"admin",
"moe"
]
}
}
}
字段属于某个范围内的值
GET /moe_db/_doc/_search
{
"query": {
"range": {
"age": {
"gte": 18,# gte: >=, gt: >
"lte": 30
}
}
}
}
查看某个字段是否存在
GET /moe_db/_doc/_search
{
"query": {
"exists": {
"field": "name"
}
}
}
GET /moe_db/_doc/_search
{
"query": {
"ids": {
"values": [
1,
2,
6
]
}
}
}
匹配查询,将被查询值进行分词,然后用评分机制(TF/IDF)进行打分
全量查询,会返回当前索引下全部数据
查询指定段落,完全匹配,不支持分词
{
"query":{
"match_phrase":{
"category":"小米"
}
},
"hightlight":{//将字段文本高亮展示
"fields":{
"category":{}
}
}
}
from:(页码-1)*每页条数
指定检索结果中输出的数据条数,缺省为10条
允许我们将检索的结果以指定的字段进行排序显示
"sort":{
"price":{
"order":"desc"//asc和数据库差不多
}
}
制定检索结果输出的字段
"_source":["title",...]//输入想看到的字段即可
该类型允许我们通过一个脚本计算document中不存在的值,比如我们需要计算install/click得到cti之类的
"script_fields": {
"FIELD": {# 指定脚本计算之后值得名称
"script": {# 脚本内的运算
}
}
}
基于搜索查询,可以嵌套聚合来组合复杂的需求
"aggs": {//聚合操作
"NAME": {# 指定结果的名称
"AGG_TYPE": {# 指定具体的聚合方法,
TODO: # 聚合体内制定具体的聚合字段
}
}
TODO: # 该处可以嵌套聚合
}
AGG_TYPE:terms(分组);avg(平均值)
指定前缀查询
{
"query":{
"prefix":{
"name":{
"value":"王小"
}
}
}
}
通配符查询
{
"query":{
"wildcard":{
"name":{
"value":"王小*"//"*"代表n个字符 "?"代表1个字符
//"value":"王?"-》得到结果为王x的值
}
}
}
}
模糊查询含有指定某关键词的文档
注意:允许出现的错误必须在0-2之间
{
"query":{
"fuzzy":{
"content":"什么"
}
}
}
目标文本含有“spring”输入“spr8ng”“sp88ng”都可匹配到 但输入“sp888g”就无法匹配
多字段查询(也会对查询文本进行分词来查询)
{
"query":{
"multi_match":{
"query":"中国",
"fields":["name","content"]//写需要参与检索的字段
}
}
}
多字段分词查询(与multi_match相比 这个可以在搜索时指定分词器)
{
"query":{
"query_String":{
"query":"中国声音",
"analyzer":"simple"
"fields":["name","content"]
}
}
}
“这是一个框架”通过不同分词器的结果
分词器:simple——》“这是一个框架” ; standard——》“这”“是”“一”“个”“框”“架”
将多个单条件查询组合起来就是多条件查询
把多个条件组合成and、or、not的关系
各个条件都必须满足,即各个条件是and的关系
POST /moe_db/_doc/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"name": "admin"
}
},
{
"term": {
"age": 30
}
}
]
}
}
}
各个条件有一个满足即可,即各个条件为or关系
POST /moe_db/_doc/_search
{
"query": {
"bool": {
"should": [
{
"term": {
"name": "admin"
}
},
{
"term": {
"age": 30
}
}
]
}
}
}
不满足所有条件,即各个条件为not关系
POST /moe_db/_doc/_search
{
"query": {
"bool": {
"must_not": [
{
"term": {
"name": "xxoo"
}
}
]
}
}
}
过滤
POST /moe_db/_doc/_search
{
"query": {
"bool": {
"filter": [
{
"term": {
"name": "admin"
}
}
]
}
}
}
加油鸭