博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
005,elasticsearch多种搜索方式--语法初窥
阅读量:7153 次
发布时间:2019-06-29

本文共 2205 字,大约阅读时间需要 7 分钟。

hot3.png

elasticsearch多种搜索方式--语法初窥

 

elasticsearch六种搜索方式:

1、query string search

2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search

 

1、query string search

    (1)搜索全部用户:

    GET  /index/type/_search

        如下图,所得信息:

        120632_6El2_3693993.png

        参数解释:     

        took:耗费了几毫秒

        _shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)

        hits.total:查询结果的数量,N个document

        hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高

        hits.hits:包含了匹配搜索的document的详细数据

        (2)搜索用户名中包含“帅”的商品,而且按照年龄降序排序:

            GET   /index/type/_search?q=name:帅&sort=age:desc

 

2、query DSL

        DSL:Domain Specified Language,特定领域的语言

        http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法

        (1)查询所有的用户

            GET   /index/type/_search

                    {
                          "query": { "match_all": {} }
                    }

        (2)查询名称包含shuai的用户,同时按照年龄降序排序

            GET /index/type/_search

            {

                "query" : {
                    "match" : {
                        "name" : "shuai"
                    }
                },
                "sort": [
                    { "age": "desc" }
                ]
            }

        (3)分页查询用户,假设每页就显示1条记录,现在显示第2页

            GET /index/type/_search

            {
                  "query": { "match_all": {} },
                  "from": 1,
                  "size": 1
            }

        (4)指定要查询出来用户的名称和年龄就可以

            GET /index/type/_search

            {

                  "query": { "match_all": {} },
                  "_source": ["name", "age"]
            }

        (5),分页查询商品,总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品

            GET /ecommerce/product/_search

            {
              "query": { "match_all": {} },
              "from": 1,
              "size": 1
            }

            (6),指定要查询出来商品的名称和价格就可以

            GET /ecommerce/product/_search

            {
              "query": { "match_all": {} },
              "_source": ["name", "price"]
            }

 

3、query filter

搜索商品名称包含yagao,而且售价大于25元的商品

GET /ecommerce/product/_search

{
    "query" : {
        "bool" : {
            "must" : {
                "match" : {
                    "name" : "yagao" 
                }
            },
            "filter" : {
                "range" : {
                    "price" : { "gt" : 25 } 
                }
            }
        }
    }
}

---------------------------------------------------------------------------------------------------------------------------------

4、full-text search(全文检索)

GET /ecommerce/product/_search

{
    "query" : {
        "match" : {
            "producer" : "yagao producer"
        }
    }
}

5、phrase search(短语搜索)

跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回

phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

GET /ecommerce/product/_search

{
    "query" : {
        "match_phrase" : {
            "producer" : "yagao producer"
        }
    }
}

6、highlight search(高亮搜索结果)

GET /ecommerce/product/_search

{
    "query" : {
        "match" : {
            "producer" : "producer"
        }
    },
    "highlight": {
        "fields" : {
            "producer" : {}
        }
    }
}
 

 

 

转载于:https://my.oschina.net/u/3693993/blog/1547264

你可能感兴趣的文章
JAVA学习--Collections集合工具类使用
查看>>
Verilog学习----调试用系统任务和常用编译预处理语句
查看>>
个人知识管理工具 PinPKM
查看>>
GlusterFS分布式文件系统的使用
查看>>
[数据结构]之递归
查看>>
es6 Proxy对象详解
查看>>
设计一个精致按钮
查看>>
为IE8添加EventListener系列方法支持
查看>>
数据库基本语法
查看>>
环境监测小助手V1.1的Windows版
查看>>
bzoj1046(HAOI2007)上升序列
查看>>
bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂
查看>>
js获取本机内网IP地址和MAC地址
查看>>
7. Reverse Integer
查看>>
MySql错误处理(三)- 错误处理的例子
查看>>
Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
查看>>
Linux多线程Pthread学习小结
查看>>
JVM性能调优入门
查看>>
关于BMP
查看>>
UML视频
查看>>