Elasticsearch学习系列之term和match查询实例
Elasticsearch查询模式
一种是像传递URL参数一样去传递查询语句,被称为简单查询
GET /library/books/_search //查询index为library,type为books的全部内容
GET /library/books/_search?q=price:10 //查询index为library,type为books中price等于10的
另一种是DSL语句来进行查询,被称为DSL查询,term和match就属于DSL
term查询
term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇
格式
GET /library/books/_search #这里是变化的,指定index和type;(比如说index为library,type为books)
{
"query": {
"term": {
"key": "value" #这里是变化的,比如说查询title等于elasticsearch的内容
}
}
}
实例1:查询index为library,type为books重title等于elasticsearch的内容
GET /library/books/_search
{
"query": {
"term": {
"title": "elasticsearch"
}
}
}
match查询
match和term的区别是,match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,而term查询不会有分析器分析的过程
match查询相当于模糊匹配,只包含其中一部分关键词就行
格式
{
"query":{
"match":{
"key":"value"
}
}
}
实例1:过滤出preview字段中包含"elasticsearch"的索引,并且只显示preview和title字段
{
"fields":["preview","title"]
"query":{
"match":{
"preview":"elasticsearch"
}
}
}
match_all查询
查询指定索引下的所有文档
实例1:过滤出index为library,type为books的所有文档
GET /library/books/_search
{
"query":{
"match_all":{}
}
}
实例2:通过match_all过滤出所有字段,然后通过partial在过滤出包含preview的字段和排除title,price的字段
GET /library/books/_search
{
"partial_fields":{
"partial":{
"include":["preview"], #包含preview字段的文档
"exclude":["title,price"] #排除title,price字段
},
"query":{
"match_all":[]
}
}
}
match_phrase查询
短语查询,slop定义的是关键词之间隔多少未知单词
格式
GET /library/books/_search
{
"query":{
"match_phrase" :{
"query":"Elasticsearch,distributed",
"slop":2 #表示Elasticsearch和distributed之间隔多少单词
}
}
}
multi_match查询
可以指定多个字段
实例1:查询title和preview这两个字段都包含Elasticsearch关键词的文档
GET /library/books/_search
{
"query":{
"multi_match":{
"query":"Elasticsearch"
"fields":["title","preview"]
}
}
}
filter过滤查询
查询同时,通过filter条件在不影响打分的情况下筛选出想要的数据
简单的filter查询
实例1:先查询index为library,type为books的全部文档;再过滤price等于20的
GET /store/products/_search
{
"query": {
"filtered":{
"query":{
"match_all": {} #先查询index为store,type
},
"filter": {
"term" :{
"price":20 #这里是条件,price等于20的
}
}
}
}
}
filter之bool过滤查询
格式
{
"bool":{
"must" : [],
"should" : [],
"must_not" : [],
}
}
#must:条件必须满足,相当于sql语句的and
#should:条件可以满足也可以不满足,相当于sql语句的or
#must_not:条件不需要满足,相当于sql语句的not
实例1:查询价格等于20或者productID等于SD1002136的商品,再排除价格等于30的
GET /store/products/_search
{
"query": {
"filtered":{
"filter":{
"bool":{
"should": [
{"term" : {"price" : 20}},
{"term" : {"productID" : "SD1002136"}}
],
"must_not": {
"term" :{"price":30}
}
} }
}
}
}
filter之and,not,or查询
没有bool,也可以直接使用and,or,not
实例1:and用法,查询价格是10元并且productID又是SD1002136的结果
GET /store/products/_search
{
"query":{
"filtered":{
"filter":{
"and":[
{
"term":{
"price":10
}
},
{
"term":{
"productID":"SD1002136"
}
}
]
},
"query":{
"match_all": {}
}
}
} }
实例2:or用法,查询价格是10元或者productID是SD4535233的商品
GET /store/products/_search
{
"query":{
"filtered":{
"filter":{
"or":[
{
"term":{
"price":10
}
},
{
"term":{
"productID":"SD4535233"
}
}
]
},
"query":{
"match_all":{}
}
}
}
}
实例3:not用法,查询productID不是SD1002136的商品
GET /store/products/_search
{
"query":{
"filtered":{
"filter":{
"not":{
"term":{
"productID":"SD1002136"
}
}
},
"query":{
"match_all": {}
}
}
}
}
filter之range范围查询
格式
GET /store/products/_search
{
"query":{
"filtered":{
"filter":{
"range":{
"key":{
"条件" : value1
"条件": value2
}
}
}
}
}
}
条件
gt : 大于
lt : 小于
gte : 大于等于
lte :小于等于
实例1:查询price大于等于20小于等于40的结果
GET /store/products/_search
{
"query":{
"filtered":{
"filter":{
"range":{
"price":{
"gte" : 20,
"lte" : 40
}
}
}
}
}
}
Elasticsearch学习系列之term和match查询实例的更多相关文章
- Elasticsearch学习系列之term和match查询
lasticsearch查询模式 一种是像传递URL参数一样去传递查询语句,被称为简单查询 GET /library/books/_search //查询index为library,type为book ...
- ElasticSearch 学习记录之父子结构的查询
父子结构 父亲type属性查询子type 的类型 父子结构的查询,可以通过父亲类型的字段,查询出子类型的索引信息 POST /product/_search { "query": ...
- Elasticsearch学习系列三(搜索案例实战)
Query DSL Es提供了基于JSON的完整查询DSL(Domain Specific Language 特定域的语言)来定义查询.将查询DSL视为查询的AST(抽象语法树).它由两种子句组成: ...
- Elasticsearch学习系列一(部署和配置IK分词器)
Elasticsearch简介 Elasticsearch是什么? Elaticsearch简称为ES,是一个开源的可扩展的分布式的全文检索引擎,它可以近乎实时的存储.检索数据.本身扩展性很好,可扩展 ...
- Lucene/ElasticSearch 学习系列 (1) 为什么学,学什么,怎么学
为什么学 <What I wish I knew When I was 20>这本书给了我很多启发.作者在书中提到,Stanford 大学培养人才的目标是 ”T形人才“:精通某个领域,但对 ...
- Elasticsearch学习之深入搜索一 --- 提高查询的精准度
1. 为帖子增加标题字段 POST /forum/article/_bulk { "} } { "doc" : {"title" : "th ...
- Elasticsearch学习系列二(基础操作)
本文将分为3块讲解Es的基础操作.分别为:索引(index).映射(mapping).文档(document). 索引操作 创建索引库 语法: PUT /索引名称{ "settings&qu ...
- Lucene/ElasticSearch 学习系列 (2) Information Retrival 初步之名词解释
计算机领域一半是理论,一半是在理论基础之上的应用.要想深入地掌握某个方面的应用,就需要先学习那方面的理论. “搜索”是应用,其背后的理论是 "Information Retrieval&qu ...
- Elasticsearch学习系列之多文档操作mget
测试数据 GET /library/books/1 { "_index": "library", "_type": "books& ...
随机推荐
- 《DSP using MATLAB》示例Example7.6 Type-3 Linear-Phase FIR
代码: h = [-4, 1, -1, -2, 5, 0, -5, 2, 1, -1, 4]; M = length(h); n = 0:M-1; [Hr, w, c, L] = Hr_Type3(h ...
- 接口测试框架——第六篇-读Excel封装方法
谢谢@小麦苹果的提醒,才发现我借口测试少写了一个文件,今天给大家补上: common->service->excel_case_data.py # coding: utf-8 import ...
- MySQL事物回滚
#commit.rollback用来确保数据库有足够的剩余空间:#commi.rollback只能用于DML操作,即insert.update.delet;#rollback操作撤销上一个commit ...
- centos下svn的主要常用命令(解决商城系统添加的文件无法自动更新至svn服务器)
问题描述: 在商城中通过网页上传的png文件无法自动添加到版本库中. 查找过程: 通过程序分析,增加的主要是数据文件,主要分布在data目录中. svn list /home/ggg --depth= ...
- C# 6.0 新特性收集
先来看一段Json.Net的代码 public JObject ToJson() { var result = new JObject(); result["X"] = X; re ...
- 对SQLite数据库操作 操作db文件
sqlite数据库就是一个DB文件. 程序每操作一次数据库都要读一次 .DB 文件 . 这个文件就是这个SQLite数据库. 如果需要依赖包的可以联系我 工具类: package com.hot ...
- windows下编译nginx+nginx_rtmp_modue(vs2013)
阅读官方编译windows版本的方法 http://nginx.org/en/docs/howto_build_on_win32.html 我的环境 Windows 7 Ultimate 64,Vis ...
- Hibernate学习7—Hibernate 映射继承
需求:学生有很多照片,分为生活照和工作照: 第一节:每个具体类对应一个表 Student.java: package com.cy.model; import java.util.Set; publi ...
- 杂项:HTML5-2/3-新元素
ylbtech-杂项:HTML5-2/3-新元素 自1999年以后HTML 4.01 已经改变了很多,今天,在HTML 4.01中的几个已经被废弃,这些元素在HTML5中已经被删除或重新定义. 为了更 ...
- 【洛谷】P1196 银河英雄传说(并查集)
题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...