es的基本查询api的使用

本文主要记录es的基本查询api的使用

基本查询种类

term查询

{
    "query": {
        "term": {
            "title": "crime"
        }
    }
}
  • 指定权重
{
    "query": {
        "term": {
            "title": {
                "value":"crime",
                "boost":10.0
             }
        }
    }
}
  • 多term查询查询tags中包含novel或book
{
    "query": {
        "terms": {
            "tags": ["novel","book"]
        }
    }
}

常用词查询

简单理解就是去除停用词的高权限,分高低频两组去查询,像停用词就是高频的,cutoff_frequency表示低于这个概率的词将出现在低频组中。

{
    "query": {
        "common": {
             "title":{
                 "query":"crime and punishment",
                 "cutoff_frequency":0.001
             }
        }
    }
}

match查询( 不支持lucene查询语法 )

查询title包含crime或and或punishment的文档

{
    "query": {
        "match": {
            "title": "crime and punishment"
        }
    }
}

operator操作符

要求and或者or匹配文本的分词

{
    "query": {
        "match": {
            "title": {
                 "query":"crime and punishment",
                 "operator":"and"
            }
        }
    }
}

短语查询

{
    "query": {
        "match_phrase": {
            "title": {
                 "query":"crime  punishment",
                 "slop":1
            }
        }
    }
}

前缀查询

对查询关键词的最后一个词条做前缀匹配

{
    "query": {
        "match_phrase_prefix": {
            "title": {
                 "query":"crime  punish",
                 "slop":1,
                 "max_expansions":20
            }
        }
    }
}

multi_match( 针对多个字段查询 )

{
    "query": {
        "multi_match": {
             "query":"crime  heller",
             "fields":["title","author"]
        }
    }
}

query_string查询( 支持lucene的查询语法 )

title字段包含crime,且权重为10,也要包含punishment,但是otitle不包含cat,同事author字段包含Fyodor和dostoevsky。

{
    "query": {
        "query_string": {
             "query":"title:crime^10 +title:punishment -otitle:cat +author:(+Fyodor +dostoevsky)",
             "default_field":"title"
        }
    }
}

针对多字段查询

use_dis_max使用最大分查询,max指对于给定的关键词,只有最高分才会包括在最后的文档的评分中,而不是所有包含该词条的所有字段分数之和。

{
    "query": {
        "query_string": {
             "query":"crime heller",
             "fields":["title","author"],
              "use_dis_max":true
        }
    }
}

simple_query_string查询

解析出错时不抛异常,丢弃查询无效的部分

{
    "query": {
        "simple_query_string": {
             "query":"title:crime^10 +title:punishment -otitle:cat +author:(+Fyodor +dostoevsky)",
             "default_operator":"or"
        }
    }
}

标识符查询

使用唯一表示uid来说查找

{
    "query": {
        "ids": {
             "type":"book",
             "values":["1","2","3"]
        }
    }
}

前缀查询

前缀匹配给定的关键词

{
    "query": {
        "prefix": {
             "title":"cri"
        }
    }
}
  • 指定权重
{
    "query": {
        "prefix": {
             "title":{
                 "value":"cri",
                 "boost":3.0
             }
        }
    }
}

fuzzy查询

使用编辑距离的模糊查询,计算量较大,但是对用户拼写错的场景比较有用

{
    "query": {
        "fuzzy": {
             "title":"crme"
        }
    }
}
  • 指定最小相似度偏差
{
    "query": {
        "fuzzy": {
             "title":{
                 "value":"crme",
                 "min_similarity":1
              }
        }
    }
}

通配符查询

支持*和?等通配符

{
    "query": {
        "wildcard": {
             "title": "cr?me"
        }
    }
}

范围查询

只能针对单个字段,可以是数值型的,也可以是基于字符串的。

{
    "query": {
        "range": {
             "year": {
                  "gte" :1890,
                  "lte":1900
              }
        }
    }
}

正则表达式查询

查询性能取决于正则表达式

{
    "query": {
        "regexp": {
             "title": {
                  "value" :"cr.m[ae]",
                  "boost":10.0
              }
        }
    }
}

布尔查询( 组合查询 )

{
    "query": {
        "bool": {
            "must": {
                "term": {
                    "title": "crime"
                }
            },
            "should": {
                "range": {
                    "year": {
                        "from": 1900,
                        "to": 2000
                    }
                }
            },
            "must_not": {
                "term": {
                    "otitle": "nothing"
                }
            }
        }
    }
}
时间: 2024-10-25 11:16:20

es的基本查询api的使用的相关文章

es实战之查询大量数据

背景 项目中已提供海量日志数据的多维实时查询,客户提出新需求:将数据导出. 将数据导出分两步: 查询大量数据 将数据生成文件并下载 本文主要探讨第一步,在es中查询大量数据或者说查询大数据集. es支持的查询数量 es默认支持的查询数量或者说查询深度是10,000. 可以动态修改max_result_window这个参数的设置,默认为10,000. PUT xz-logs/_settings?preserve_existing=true { "index.max_result_window&qu

【转】ES的常用查询与聚合

原文地址:http://blog.51cto.com/xpleaf/2307572 0 说明 基于es 5.4和es 5.6,列举的是个人工作中经常用到的查询(只是工作中使用的是Java API),如果需要看完整的,可以参考官方相关文档https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search.html. 1 查询 先使用一个快速入门来引入,然后后面列出的各种查询都是用得比较多的(在我的工作环境是这样),其它没怎么用的这里

快递查询API接口对接方法

各类接口 快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据.目前常用的有快递鸟.快递100.快递网等. 快递鸟即时API可以查询3000次,3000以上接订阅接口,统一接口模式接入,常用快递均支持查询,还有订阅API.在线下单API.电子面单API,接口均不收取费用,没有要求用户添加外链,支持418家国内外快递物流查询. 快递100每天可以免费查询2000次,超过2000次收费,每次0.06~0.1元不等,如果查询的量大的话可

baidu 快递查询API

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>百度快递查询接口Demo</title> <script type="text/javascript" src="js/jqu

快递查询API接口(trackingmore)

快递查询接口 目前提供快递查询的接口平台有: Trackingmore 快递100 快递网 不同接口的区别: (1)Trackingmore支持380家快递公司,其中有55家为国内的快递,其余325家为国际快递.具体的价格为0.6分钱/单号左右,新注册用户可以免费测试12小时. (2)快递100属于在国内做得比较早的平台,可以申请每天最多2000次的API调用,但需要给快递100做一个友链.超过2000次收费,每次0.06~0.1元不等. (3)快递网可以申请每天最多500次的API调用,但同样

快递鸟物流查询API接口对接案例

下面是以快递鸟提供的开发者接口进行展开,如有错误,请指正并及时修改. 首先,申请一个快递鸟的账号: 然后进入http://www.kdniao.com/reg界面点击免费申请,免费申请的接口每天接口的请求次数都是没有限制的,超过3000次/每天需接入订阅推送接口. 按照申请流程一步步做完后,即可对接. 注册信息必须填写正确,如果有误可能导致接口无法正常使用.   使用 案例分为3个 使用的是Chrome的postman插件进行Api测试调用 使用JAVA环境进行快递查询 使用.net环境进行快递

免费的页面浏览量查询api文档

页面浏览量查询api网站排名.流量.访问量.页面浏览量查询,获取指定站点历史数据. 接口名称:页面浏览量查询api 接口平台:开源接口 接口地址:http://api2.juheapi.com/alexa/historical 支持格式:json 请求方式:get/post 请求示例:http://api2.juheapi.com/alexa/historical?site=juhe.cn&key=yourKey&start=2015-10-12&range=1 调用样例及调试工具

路帮网的全国车辆限行查询API

目前全国越来越多的城市开始制定车辆限行的交通管制方式,路帮网的全国车辆限行查询接口可查询全国车辆尾号限行的数据,分别可查询尾号限行查询API和事件限行查询API,将返回城市名称.日期.星期.限行类型.限行时间.限制尾号.限行规定.限行区域及图片等字段. 接口名称:全国车辆限行查询API 接口平台:路帮网 数据格式:JSON 查询全国限行城市请求参数说明: 输出结果说明: 结果示例: { " rspcode ": "20000", "data":

百度手机号码归属地查询api与返回json处理

前天无意间在网上看到百度ApiStore,然后好奇就进去看了看.正好最近在某博培训Android,刚学到java基础.抱着锻炼的心态选择手机号码归属地查询api进行练手.api地址 (http://apis.baidu.com/apistore/mobilephoneservice/mobilephone).百度官方已经给出请求示例 .我们只需要对请求结果json进行解析就可以. Java请求示例: 1 String httpUrl = "http://apis.baidu.com/apisto