1.term查询

{
"query": {
"term": {
"title": "crime"
}
}
}

1.1.指定权重

{
"query": {
"term": {
"title": {
"value":"crime",
"boost":10.0
}
}
}
}

1.2.多term查询查询tags字段中包含novel或book

{
"query": {
"terms": {
"tags": ["novel","book"]
}
}
}

2.常用词查询

2.1.cutoff_frequency查询低于这个概率的词将

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

2.2.match查询( 不支持lucene查询语法,分词后再查询 )

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

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

2.3.operator操作符

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

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

2.4.短语查询

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

2.5.前缀查询

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

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

2.6.multi_match( 针对多个字段查询 )

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

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

3.1复合语法查询

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"
}
}
}

3.2.针对多字段查询

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

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

常见写法:

{“query”:{“query_string”:{“name:obama”}}}

name字段为obama

{“query”:{“query_string”:{“nam\\*:obama”}}}

存在一个nam开头的字段,值为obama

{“query”:{“query_string”:{“__missing__:name”}}}

name字段值为null的文档

{“query”:{“query_string”:{“__exists__:name”}}}

name字段值不为null的文档

{“query”:{“query_string”:{“name:(obama OR xidada)”}}}

name字段为Obama或者xidada的文档

3.3.simple_query_string查询

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

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

3.4.标识符查询

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

3.4.前缀查询

前缀匹配给定的关键词

{
"query": {
"prefix": {
"title":"cri"
}
}
}

指定权重

{
"query": {
"prefix": {
"title":{
"value":"cri",
"boost":3.0
}
}
}
}

3.5.fuzzy模糊查询

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

{
"query": {
"fuzzy": {
"title":"crme"
}
}
}

指定最小相似度偏差

{
"query": {
"fuzzy": {
"title":{
"value":"crme",
"min_similarity":
}
}
}
}

3.6.通配符查询

支持*和?等通配符

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

?:任意字符

*:0个或任意多个字符
 
性能差,必须扫描整个倒排索引,才ok

3.8.范围查询

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

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

3.8.正则表达式查询

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

{
"query": {
"regexp": {
"title": {
"value" :"cr.m[ae]",
"boost":10.0 //配置评分乘以10
}
}
}
}

K[A-Z].+

[0-9]:指定范围内的数字
[a-z]:指定范围内的字母
.:一个字符
+:前面的正则表达式可以出现一次或多次
 
wildcard和regexp,与prefix原理一致,都会扫描整个索引,性能很差

4.布尔查询( 组合查询 )

{
"query": {
"bool": {
"must": {
"term": {
"title": "crime"
}
},
"should": {
"range": {
"year": {
"from": ,
"to":
}
}
},
"must_not": {
"term": {
"otitle": "nothing"
}
}
}
}
}

mus:必须包含的条件,must not:不包含 ,should:包含的话会更匹配

搜索多个条件:

GET test*/_search
{
"size":,
"query": {
"bool":{
"must": [
{"match":{"message": "学生"}},
{"match":{"message": "所有"}}
],
"should": [
{"match": {"port": ""}},
{"match": {"@timestamp":"2018-09-17T17:49:25.991Z"}}
],
"must_not": [
{"match": {"port": ""}},
{"match": {"port":""}}
]
} } }

结果:

{
"took": ,
"timed_out": false,
"_shards": {
"total": ,
"successful": ,
"skipped": ,
"failed":
},
"hits": {
"total": ,
"max_score": 17.026089,
"hits": [
{
"_index": "test-name",
"_type": "doc",
"_id": "Ff0g6GUBPXqEl7zCsbQb",
"_score": 17.026089,
"_source": {
"@timestamp": "2018-09-17T15:23:06.878Z",
"appname": "test-name",
"level": "INFO",
"port": ,
"thread_name": "main",
"level_value": ,
"appName": "test-name",
"@version": ,
"host": "192.168.1.100",
"logger_name": "com.example.service.StudentService",
"@metdata": {
"ip_address": "192.168.1.100"
},
"message": "查询所有学生,pageNo1,pageSize1"
}
},
{
"_index": "test-name",
"_type": "doc",
"_id": "WFOm6GUBlATfpgHyvD55",
"_score": 16.024178,
"_source": {
"@timestamp": "2018-09-17T17:49:25.991Z",
"appname": "test-name",
"level": "INFO",
"port": ,
"thread_name": "main",
"level_value": ,
"appName": "test-name",
"@version": ,
"host": "192.168.1.100",
"logger_name": "com.example.service.StudentService",
"@metdata": {
"ip_address": "192.168.1.100"
},
"message": "查询所有学生,pageNo1,pageSize1"
}
},
{
"_index": "test-name",
"_type": "doc",
"_id": "nAMg42UBRHcv2wBhnFDg",
"_score": 14.024178,
"_source": {
"@timestamp": "2018-09-16T16:04:54.948Z",
"appname": "test-name",
"level": "INFO",
"port": ,
"thread_name": "main",
"level_value": ,
"appName": "test-name",
"@version": ,
"host": "172.20.10.6",
"logger_name": "com.example.service.StudentService",
"@metdata": {
"ip_address": "172.20.10.6"
},
"message": "查询所有学生,pageNo1,pageSize1"
}
}
]
}
}

还可以这么实现:

GET test*/_search
{
"size":,
"query": {
"query_string":{"query": "message:学生 +message:所有 -port:55714"}
}
}

ES系列十、ES常用查询API的更多相关文章

  1. ES系列十六、集群配置和维护管理

    一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...

  2. ES系列十五、ES常用Java Client API

    一.简介 1.先看ES的架构图 二.ES支持的客户端连接方式 1.REST API http请求,例如,浏览器请求get方法:利用Postman等工具发起REST请求:java 发起httpClien ...

  3. ES系列十九、kibana基本查询、可视化、仪表盘用法

    一. 定义索引模式匹配 1.前缀模糊匹配,一个模式匹配多个索引 每一个数据集导入到Elasticsearch后会有一个索引匹配模式,在上段内容莎士比亚数据集有一个索引名称为shakespeare,账户 ...

  4. ES系列十二、ES的scroll Api及分页实例

    1.官方api 1.Scroll概念 Version:6.1 英文原文地址:Scroll 当一个搜索请求返回单页结果时,可以使用 scroll API 检索体积大量(甚至全部)结果,这和在传统数据库中 ...

  5. ES系列十八、FileBeat发送日志到logstash、ES、多个output过滤配置

    一.FileBeat基本概念 简单概述 最近在了解ELK做日志采集相关的内容,这篇文章主要讲解通过filebeat来实现日志的收集.日志采集的工具有很多种,如fluentd, flume, logst ...

  6. ES系列十三、Elasticsearch Suggester API(自动补全)

    1.概念 1.补全api主要分为四类 Term Suggester(纠错补全,输入错误的情况下补全正确的单词) Phrase Suggester(自动补全短语,输入一个单词补全整个短语) Comple ...

  7. ES系列十四、ES聚合分析(聚合分析简介、指标聚合、桶聚合)

    一.聚合分析简介 1. ES聚合分析是什么? 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值.最小值,计算和.平均值等.ES作为 ...

  8. Docker系列(十四):Kubernetes API和源码分析

    Kubernetes API入门 Ku8 eye开源项目

  9. ES系列目录

    ES系列一.CentOS7安装ES 6.3.1 ES系列二.CentOS7安装ES head6.3.1 ES系列三.基本知识准备 ES系列四.ES6.3常用api之文档类api ES系列五.ES6.3 ...

随机推荐

  1. [CTSC2018] 假面 | 期望 DP

    题目链接 LOJ 2552 Luogu P4564 考场上这道题我先是写了个70分暴力,然后发现似乎可以NTT,然鹅问题是--我没学过NTT,遂脑补之,脑补出来了,下午出成绩一看,卡成暴力分(70)- ...

  2. 外显子分析弹错解决方案:Invalid command line: Cannot process the provided BAM/CRAM file(s) because they were not indexed.

    出现这种问题说明bam/cram文件没有进行index. Samtool能解决这个问题,以bam文件为例,输入以下命令行即可解决问题: /path/to/your/samtools index fil ...

  3. NO.11 复制时勿忘其每个成分

    1.Coping 函数应该确保复制对象内的"每一个成员变量",和调用合适的 "base class"构造函数(base class 某些成员往往是private ...

  4. 关于TCP连接状态的解释

    TCP各个状态主要存在于三次握手和四次挥手的过程 1.TCP建立连接时的三次握手: 服务端应用监听端口处于LISTEN状态,等待建立连接. 第一次握手:客户端发送SYN=一个随机数,然后进入SYN_S ...

  5. 继承之es5对比es6

    es5: 熟悉es5的童鞋们就知道es5的继承多么恶心~~ es5最经典的继承写法就是如下这样 1.写一个function,用this来扩展其值类属性 2.prototype添加其方法类属性 3.若整 ...

  6. 设计模式---组件协作模式之模板方法模式(Tempalte Method)

    前提:组件协作模式 现代软件专业分工之后的第一个结构是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常见的模式. 我们常常使用框架来写自己的 ...

  7. golang结构体

    声明结构体 定义结构体使用struct关键字.在结构体内部定义它们的成员变量和类型.如果成员变量的类型相同还可以把它们写到同一行. struct里面可以包含多个字段(属性) struct类型可以定义方 ...

  8. JAVA求解全排列

    一,问题描述 给定一个字符串,求出该字符串的全排列. 比如:"abc"的全排列是:abc.acb.bac.bca.cab.cba 二,实现思路 采用递归的方式求解.每次先选定一个字 ...

  9. .NET面试题系列(十)委托与事件

    委托 有了委托的存在,使得方法可以作为参数传递给另一个方法. int Max(int x,int y) { return x>y?x:y; } int Min(int x,int y) { re ...

  10. Java SE之 Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!【摘抄】

    声明一下:此BUG确实经常困扰我许久,今日遇到很强大的一套解决办法,又怕原博主的网页以后查找不到,故此摘抄copy一份,望得各方侵权一事而谅解. 传送门先行送上:http://blog.csdn.ne ...