Elasticsearch查询

单个条件查询

使用请求路径方式

以get的方式发送请求,请求地址格式:

http://localhost:9200/索引名/_search?q=键:值

例如,查询base索引当中sex属性值为man的数据

http://localhost:9200/base/_search?q=sex:man

使用请求体的方式(推荐使用)

以get的方式发送请求

http://localhost:9200/base/_search

然后在body输入要查询的条件,选择json格式,输入也要是json格式的数据,最外层的键是选择查询,然后是查询的方式,最后是查询的条件,例如

{
    "query"://查询
    {
        "match"://查询方式
        {
            "sex":"man"
        }
    }
}
{
    "query"://查询
    {
        "match_all"://全量查询
        {
           
        }
    }
}

多个条件查询

有多个条件同时成立,需要在body里面进行添加一个键名为bool的键值对,代表条件的意思,值是must或者should,filter,must表示同时成立,should表示或者,就是其中一个成立即可,filter表示范围,数值的范围条件,然后可以选择匹配查询,匹配查询的值是数组形式,表示多个条件同时成立,例如

{
   "query": //查询
   {
       "bool": //条件
       {
           "must":[  //同时成立
               {
                 "match": //条件1
                 {
                     "username": "zhangsan"
                 }
               },
               {
                   "match": //条件2
                 {
                     "age": 15
                 }
               }
           ]
       }
   }
}

选择数值范围条件需要指定范围,哪个字段还有条件,例如

{
   "query": //查询
   {
       "bool": //条件
       {
           "filter": //范围
           {
               "range":
               {
                   "age": //字段
                   {
                       "gt":12 //大于12
                   }
               }
           }
       }
   }
}

全文检索和完全匹配查询

当保存文档数据时,ElasticSearch会将数据文字进行分词拆解操作,并将拆解后的数据保存到倒排索引当中,所以只用文字的一部分也能查询到数据,类似关系数据库的模糊查询,这种检索方式成为全文检索,match就是全文检索,如果想用完全匹配查询的话,就要使用match_phrase,就是关系数据库当中的=。

编辑查询结果格式

跟关系数据库一样,查询的结果可以规定范围,数据查询的起始位置,结果的排序,显示的字段。需要在body里面进行设置,范围用size设置,数据查询位置用from设置,排序用sort设置,显示的字段用_source设置,其中size和from是整数类型,sort要说明是哪个字段用怎样的方式进行排序,_source是数组类型,例如

{
    "from":2,
    "size":2,
    "_source":["username"],
    "sort":{
        "age":{
            "order":"desc"
        }
    }
}

聚合查询

聚合查询使用的是aggs关键字,然后起一个聚合操作的名字,这个名字为键,然后选择聚合的操作,可以取terms统计或者avg平均等,然后使用field选择字段,例如

{
    "aggs"://聚合操作
    {
        "agegroup"://名字,随意
        {
            "terms"://统计
            {
                "field":"age" //字段
            }
        }
    },
    "size":0 //不显示原的数据,不添加则显示
}

映射关系

在关系数据库中,数据库表中列结构信息有长度,约束等,在Elasticsearch也有相似的概念,被称之为映射。

查询的时候有一些数据可以分词后查询,也就是模糊查询,有一些数据是完全匹配的,在Elasticsearch当中,可以提前设置好,使得一些字段的数据在查询的时候不可以进行分词,也就是不允许模糊查询,甚至可以设置index属性,表明这个数据不可以通过该字段进行查询。

以get的方式请求

http://localhost:9200/base/_mapping

并且在body里面输入json数据,选择json格式,输入关键字propertices,然后决定字段的设置,type可以决定是否可以分词,index可以决定是否可以通过数据进行索引,例如

{
    "propertices":
    {
        "name":{
            "type":"text", //text表示可以进行分词
            "index":"true" //表示可以通过该字段进行查询
        },
        "sex":{
            "type":"keyword", //keyword表示不可以进行分词
            "index":"true"
        },
        "age":
        {
            "type":"keyword",
            "index":"false" //表示不可以通过该字段进行查询
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值