ElasticSearch查询

一:查询语句的结构

复制代码
典型结构:
{
    QUERY_NAME: {
        ARGUMENT: VALUE,
        ARGUMENT: VALUE,...
    }
}
针对某个字段: { QUERY_NAME: { FIELD_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } } }

合并查询语句;
{
    "bool": {
        "must":     { "match": { "tweet": "elasticsearch" }},
        "must_not": { "match": { "name":  "mary" }},
        "should":   { "match": { "tweet": "full text" }},
        "filter":   { "range": { "age" : { "gt" : 30 }} }
    }
}
复制代码

 

二:最重要的查询

match_all   经常与 filter 结合使用,相同的相关性查询。

match         相关性得分查询

multi_match   

range     gt,gte,lt,lte

term      精确值匹配

terms

exists和missing

 

三:组合查询

must  文档 必须 匹配这些条件才能被包含进来。
must_not  文档 必须不 匹配这些条件才能被包含进来。
should  如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。
filter  必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。 

四:验证查询

复制代码
验证查询是否合法:
GET /gb/tweet/_validate/query { "query": { "tweet" : { "match" : "really powerful" } } }

查询不合法的原因:
GET /gb/tweet/_validate/query?explain
{
   "query": {
      "tweet" : {
         "match" : "really powerful"
      }
   }
}
复制代码

五:排序查询 

基本用法:

复制代码
单级排序:
"
sort": { "date": { "order": "desc" }}

多级排序:
"sort": [
     { "date":   { "order": "desc" }},
     { "_score": { "order": "desc" }}
 ]
复制代码

字符串排序和多字段:

复制代码
为一个多字段映射如:
"tweet": { 
    "type":     "string",
    "analyzer": "english",
    "fields": {
        "raw": { 
            "type":  "string",
            "index": "not_analyzed"
        }
    }
}

  排序:
GET /_search
{
    "query": {
        "match": {
            "tweet": "elasticsearch"
        }
    },
    "sort": "tweet.raw"
}
复制代码

 

 

参考文献:ElasticSearch权威指南

posted @   上海小墨子  阅读(194)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示