美文网首页
2021-04-12

2021-04-12

作者: 啦啦一路高歌 | 来源:发表于2021-04-11 13:49 被阅读0次

Elasticsearch 提供了丰富的查询过滤语句,本文整理了一些常用的查询方法。

ES 有两种查询方式。本文主要介绍基于DSL语法的查询

使用 Search Lite API,它从url中获取参数
使用 Json 作为请求体,使用 ES的DSL语法来进行查询

1. 全文级别查询

match 是一个标准查询,可以查询文本、数字、日期格式的数据。match 查询的一个主要用途是全文检索。
ES 5.X 以上的版本默认使用BM25算法进行相似度的计算

GET /_search
{
    "query": {
        "match" : {
            "message" : "hello world"
        }
    }
}
match_phrase 与match查询不同,它是精确匹配

GET /_search
{
    "query": {
        "match_phrase" : {
            "message" : "this is a test"
        }
    }
}
multi_match 允许在做match 查询的基础上查询多个字段

GET /_search
{
    "query":{
         "multi_match": {
            "query":    "full text search",
            "fields":   [ "title", "body" ]
        }
    } 
}
2. 词条级别查询

term 用于精确值的查询。使用boost参数可以提高指定字段的分数。boost的默认值为1。

string类型的数据在ES中可以使用text或者keyword的类型来存储。ES存储text类型的数据时会自动分词,然后建立索引。
keyword存储数据时,不会分词,直接建立索引。如果需要对string数据进行精确查询,应该使用keyword的类型来存储数据。

GET /_search
{
    "query":{
        "bool":{
            "should":[
                {
                    "term":{
                        "status":{
                            "value":"urgent",
                            "boost":2
                        }
                    }
                },
                {
                    "term":{
                        "status":"normal"
                    }
                }
            ]
        }
    }
}
terms 可以指定一个字段的多个精确值。

GET /_search
{
    "query": {
        "constant_score" : {
            "filter" : {
                "terms" : { "user" : ["kimchy", "elasticsearch"]}
            }
        }
    }
}
range 用于需要查询指定范围的内容。range 的常用参数有gte (greater-than or equal to), gt (greater-than) ,lte (less-than or equal to) 和 lt (less-than)。ES 的date类型的数值也可以使用range查询。

GET /_search
{
    "query": {
        "range" : {
            "age" : {
                "gte" : 10,
                "lte" : 20,
                "boost" : 2.0
            }
        }
    }
}
exists 返回在原始字段汇中至少有一个非空值的文档

GET /_search
{
    "query": {
        "exists" : { "field" : "user" }
    }
}
prefix 前缀查询

GET /_search
{
    "query": {
        "prefix": {
            "postcode": "W1"
        }
    }
}
3. 复合查询

bool 查询可以合并多个过滤条件查询的结果。bool 查询可由 must, should, must not, filter 组合完成

  • must 查询的内容必须出现在检索到的文档中,并且会计算文档匹配的相关度
  • filter 查询的内容必须出现在检索到的文档中。与must不同,filter中的查询条件不会参与评分。filter对查询的数据有缓存功能。filter效率会比must高一些,一般,除了需要计算相关度的查询,一般使用filter
  • should 至少有一个查询条件匹配,相当于 or
  • must_mot 多个查询条件的相反匹配,相当于 not
GET /_search
{
    "query":{
        "bool":{
            "must":{
                "term":{
                    "user":"kimchy"
                }
            },
            "filter":{
                "term":{
                    "tag":"tech"
                }
            },
            "must_not":{
                "range":{
                    "age":{
                        "gte":10,
                        "lte":20
                    }
                }
            },
            "should":[
                {
                    "term":{
                        "tag":"wow"
                    }
                },
                {
                    "term":{
                        "tag":"elasticsearch"
                    }
                }
            ]
        }
    }
}

相关文章

  • 猴子可以用意念玩游戏了

    This Monkey Is Playing Pong With Its Mind 2021-04-12 346词...

  • 卢浮宫开通线上浏览

    Louvre Puts Entire Collection Online 2021-04-12 382词 六级/考...

  • 青花瓷

    青花瓷 (美国洛杉矶《中国日报》2021-04-12日发表,副刊C5版 ) 一尘 / 2021-03-17 一九九...

  • 给予自己

    我怎么如此幸运-99将帅挑战赛36-重生219-戴红霞(2021-04-12) 我怎么如此幸运-给予自己 1.我怎...

  • 漫步在江南的春天里

    杭州。苏州。南京。 2021-04-12 三十岁时我很恐慌,担心我的人生过半时,依然碌碌无为。 之后我开始走出自己...

  • 班主任日记2

    2021-04-12 星期一 又是一个星期的开始。 班上的问题层出不穷。 去体检一个上午,下午午读课还未...

  • 2021-04-12

    接着昨天的话题继续。 怎么感觉周末的时光分外的快,感觉还没有开始就匆匆划过。这两天的时间几乎都是在球馆...

  • 2021-04-12

    善良的心 房子买在湖心岛上,看来是买对了。 春天里,只要我一回到家,便立刻跑到湖边去看花。 春天最泛滥的就是花,遍...

  • 2021-04-12

    这是一个值得纪念的日子。 去年的这一天我头披红纱,与韩先生携手走进婚姻的殿堂。一切都是这麽的顺理成章,水到渠成。 ...

  • 2021-04-12

    昨天的日更不知道为什么没有发出来,其实已经不重要了。 今天早上上了两节大课,感觉还不错不知道会员怎么样。第二节课有...

网友评论

      本文标题:2021-04-12

      本文链接:https://www.haomeiwen.com/subject/dhhxlltx.html