【ES】学习3-请求体查询
1.空查询
GET /index_2014*/type1,type2/_search
{}
GET /_search
{
"from": ,
"size":
}
2.查询表达式
DSL只需将查询语句传递给 query 参数
GET /_search
{
"query": YOUR_QUERY_HERE
}
查询全部 match_all 跟空查询等价
GET /_search
{
"query": {
"match_all": {}
}
}
针对某个字段,结构
{
    QUERY_NAME: {
        FIELD_NAME: {
            ARGUMENT: VALUE,
            ARGUMENT: VALUE,...
        }
    }
}
GET /_search
{
"query": {
"match": {
"tweet": "elasticsearch"
}
}
}
3.查询与过滤
查询:一个评分的匹配,计算相似度
过滤:一个不评分的匹配,只有是或否。过滤的性能更好。
4.重要字段
match_all:匹配所有
{ "match_all": {}}
match:全文匹配或精确匹配
{ "match": { "tweet": "About Search" }}
{ "match": { "age":               }}
{ "match": { "date":   "2014-09-01" }}
{ "match": { "public": true         }}
{ "match": { "tag":    "full_text"  }}
multi_match:在多个字段上执行相同的match查询
{
    "multi_match": {
        "query":    "full text search",
        "fields":   [ "title", "body" ]
    }
}
range:找出那些落在指定区间内的数字或者时间
{
    "range": {
        "age": {
            "gte":  ,
            "lt":
        }
    }
}
term:用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些not_analyzed 的字符串
{ "term": { "age":               }}
{ "term": { "date":   "2014-09-01" }}
{ "term": { "public": true         }}
{ "term": { "tag":    "full_text"  }}
terms:和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件
{ "terms": { "tag": [ "search", "full_text", "nosql" ] }}
exists:查找指定字段中有值的文档
{
    "exists":   {
        "field":    "title"
    }
}
missing:查找指定字段中无值的文档
5.组合多查询
bool:将多查询组合在一起。它支持参数:
  must:文档 必须 匹配这些条件才能被包含进来。
  must_not:文档 必须不 匹配这些条件才能被包含进来。
  should:如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。
  filter:必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。
{
    "bool": {
        "must":     { "match": { "title": "how to make millions" }},
        "must_not": { "match": { "tag":   "spam" }},
        "should": [
            { "match": { "tag": "starred" }}
        ],
        "filter": {
          "range": { "date": { "gte": "2014-01-01" }}
        }
    }
}
{
    "bool": {
        "must":     { "match": { "title": "how to make millions" }},
        "must_not": { "match": { "tag":   "spam" }},
        "should": [
            { "match": { "tag": "starred" }}
        ],
        "filter": {
          "bool": {
              "must": [
                  { "range": { "date": { "gte": "2014-01-01" }}},
                  { "range": { "price": { "lte": 29.99 }}}
              ],
              "must_not": [
                  { "term": { "category": "ebooks" }}
              ]
          }
        }
    }
}
constant_score查询:
它将一个不变的常量评分应用于所有匹配的文档。它被经常用于你只需要执行一个 filter 而没有其它查询(例如,评分查询)的情况下。可以使用它来取代只有 filter 语句的 bool 查询。
{
    "constant_score":   {
        "filter": {
            "term": { "category": "ebooks" }
        }
    }
}
6. 验证查询
_validate, explain:判断查询是否合法以及原因。
GET /gb/tweet/_validate/query?explain
{
"query": {
"tweet" : {
"match" : "really powerful"
}
}
}
【ES】学习3-请求体查询的更多相关文章
- 第2部分 Elasticsearch查询-请求体查询、排序
		一.请求体查询 请求体 search API, 之所以称之为请求体查询(Full-Body Search),因为大部分参数是通过http请求体而非查询字符串来传递的. 请求体查询:不仅可以处理自身的查 ... 
- elasticsearch 基础 —— 请求体查询
		请求体查询 简易 查询 -query-string search- 对于用命令行进行即席查询(ad-hoc)是非常有用的. 然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, ... 
- elasticsearch 请求体查询方式整理
		空查询(empty search) —{}— 在功能上等价于使用 match_all 查询, 正如其名字一样,匹配所有文档: GET /_search { "query": { & ... 
- ElasticSearch 5学习(10)——结构化查询(包括新特性)
		之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ... 
- elasticsearch(5) 请求体搜索
		上一篇提到的轻量搜索非常简单便捷,但是通过请求体查询可以更充分的利用查询的强大功能.因为_search api中大部分参数是通过HTTP请求体而非查询字符串来传递的. 一 空查询 对于空查询来说,最简 ... 
- ElasticSearch权威指南学习(结构化查询)
		请求体查询 简单查询语句(lite)是一种有效的命令行adhoc查询.但是,如果你想要善用搜索,你必须使用请求体查询(request body search)API. 空查询 我们以最简单的 sear ... 
- FastAPI 学习之路(九)请求体有多个参数如何处理?
		系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ... 
- FastAPI 学习之路(十)请求体的字段
		系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ... 
- FastAPI 学习之路(十一)请求体 - 嵌套模型
		系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ... 
随机推荐
- Int2BinaryString.java
			/****************************************************************************** * Compilation: javac ... 
- Date对象常用方法
			年月日: var oDate = new Date() //年 oDate.getFullYear(); //月 返回的月份要+1才正常 oDate.getMonth()+1: //日 oDate.g ... 
- js之string操作符
			1.字符方法 // 输出索引值的字符 'zhangamie'.charAt(2) // "a" 'zhangamie'[2] //"a" // 输出编码 a的a ... 
- Scala进阶之路-idea下进行spark编程
			Scala进阶之路-idea下进行spark编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.创建新模块并添加maven依赖 <?xml version=&qu ... 
- 将web应用部署到Tomcat的三种方式
			Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应 ... 
- 把svn上的mycelipse导到本地的eclipse中【原】
			myeclipse和eclipse的web项目互导时会产生各种问题,现在把我遇到的情况记录如下: eclipse如何把svn上down下来的myeclipseWeb项目变成eclipse的Web项目: ... 
- C# 多线程辅助类实现多任务
			1)首先实现一个多线程的辅助类,代码如下: public class ThreadMulti { public delegate void DelegateComplete(); public del ... 
- 矩阵乘法np.dot()及np.multipy()区别
			1. 线性代数中矩阵乘法: np.dot() import numpy as np  # 2 x 3 matrix1 = np.array([[1, 2, 3], [4, 5, 6]])  # 3 ... 
- Neural Networks and Deep Learning 课程笔记(第三周)浅层神经网络(Shallow neural networks)
			3.1 神经网络概述(Neural Network Overview ) (神经网络中,我们要反复计算a和z,最终得到最后的loss function) 3.2 神经网络的表示(Neural Netw ... 
- PHP7 学习笔记(七)如何使用zephir编译一个扩展记录
			一.zephir 编译遇到的错误 安装 git clone https://github.com/phalcon/zephir $ cd zephir $ ./install-json $ ./ins ... 
