Elasticsearch学习笔记(二)

高级查询

查看所有文档

查看匹配的文档

、向ES服务器发送GET请求:localhost:9200/shopping/_search

{
    "query":{
        "match":{
            "title":"西游记"
        }
    }
}

查看全部的文档

{
    "query":{
        "match_all":{
            
        }
    }
}
分页查询
{
    "query":{
        "match_all":{
        }
    },
    "from":0,
    "size":1
}

image-20211110161200805

如果不想匹配source中的所有字段可以在请求体中添加条件

{
    "query":{
        "match_all":{
        }
    },
    "_source":["title"]
}

可以在添加"_source"后在中括号中添加想要显示的字段。

image-20211110161651587

根据条件进行排序

image-20211110162040641

{
    "query":{
        "match_all":{
        }
    },
    "sort":{
        "price":"desc",根据price字段进行降序排序
    }
}
组合查询
{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                    "title":"西游记"
                    }
                },
                {
                    "match":{
                    "price":33.00
                    }
                }
            ]
        }
    }
}

"must"表示且的意思,也就是匹配的数据需要title为西游记,price为33.00

"should"表示或的意思,任一个匹配到就可以。

范围查询

使用range字段查询出在指定范围的数据。

image-20211110164649615

{
    "query":{
        "range":{
            "price":{
                // "gt":23.00,
                "gte":23.00
            }
        }
    }
}
全文检索
{
    "query":{
        "match":{
            "title":"甜西",会对这个词进行差分,分别进行匹配
        }
    }
}
完全匹配
{
    "query":{
        "match_phrase":{
            "title":"西甜"
        }
    }
}

使用match_phrase进行完全匹配

模糊匹配
{
    "query":{
        "match":{
            "title":"西游记"
        }
    },
    "highlight":{
        "fields":{
            "title":{}
        }
    }
}

image-20211110174508874

聚合查询

分组显示

{
    "aggs":{ //聚合查询
        "price_group":{ //名称,随意起名
            "terms":{ //分组
                "field":"price" // 分组字段
            }
        }
    }
}

image-20211110180116099

显示平均值

{
    "aggs":{ //聚合查询
        "price_avg":{ //名称,随意起名
            "avg":{ //平均值
                "field":"price" // 分组字段
            }
        }
    },
    "size":0 //不显示原始数据
}

image-20211110180427002

映射关系

{
    "properties":{
        "name":{
            "type":"text", // 可以使用分词
            "index":true // 可以被索引
        },
        "sex":{
            "type":"keyword",// 关键词,不能分词
            "index":true  // 可以被索引
        },
        "tel":{
            "type":"keyword",
            "index":false // 不能被索引
        }
    }
}

首先创建索引,使用PUT请求,

image-20211110182030825

查看映射使用GET请求

image-20211110182353011

查询

因为name字段设置的映射为text,可以使用分词器,所以查询时可以查出数据

image-20211110183243080

因为sex字段使用的是keyword,因此查询男不能查出来,需要查询男的

image-20211110183034011

因为tel字段设置的不能被索引,因此查询tel字段无法查出数据

image-20211110183136180

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值