es 的常用查询语法_小_曦的博客-CSDN博客_es查询语法


本站和网页 https://blog.csdn.net/qingmoruoxi/article/details/77221602 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

es 的常用查询语法_小_曦的博客-CSDN博客_es查询语法
es 的常用查询语法
小_曦
于 2017-08-16 09:53:50 发布
26189
收藏
12
分类专栏:
es
es
专栏收录该内容
0 篇文章
0 订阅
订阅专栏
Filter DSL
term 过滤
term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型): 
{ "term": { "age":    26           }}  { "term": { "date":   "2014-09-01" }}  { "term": { "public": true         }}  { "term": { "tag":    "full_text"  }}
完整的例子, hostname 字段完全匹配成 saaap.wangpos.com 的数据:
{    "query": {      "term": {        "hostname": "saaap.wangpos.com"      }    }  }
terms 过滤
terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:
{      "terms": {          "tag": [ "search", "full_text", "nosql" ]          }  }
完整的例子,所有http的状态是 302 、304 的, 由于ES中状态是数字类型的字段,所有这里我们可以直接这么写。:
{    "query": {      "terms": {        "status": [          304,          302        ]      }    }  }
range 过滤
range过滤允许我们按照指定范围查找一批数据:
{      "range": {          "age": {              "gte":  20,              "lt":   30          }      }  }
范围操作符包含:
gt :: 大于gte:: 大于等于lt :: 小于lte:: 小于等于
一个完整的例子, 请求页面耗时大于1秒的数据,upstream_response_time 是 nginx 日志中的耗时,ES中是数字类型。
{    "query": {      "range": {        "upstream_response_time": {          "gt": 1        }      }    }  }
exists 和 missing 过滤
exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的IS_NULL条件. 
{      "exists":   {          "field":    "title"      }  } 
这两个过滤只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用。
bool 过滤
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符:
must :: 多个查询条件的完全匹配,相当于 and。must_not :: 多个查询条件的相反匹配,相当于 not。should :: 至少有一个查询条件匹配, 相当于 or。
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组:
{      "bool": {          "must":     { "term": { "folder": "inbox" }},          "must_not": { "term": { "tag":    "spam"  }},          "should": [                      { "term": { "starred": true   }},                      { "term": { "unread":  true   }}          ]      }  }
Query DSL
match_all 查询
可以查询到所有文档,是没有查询条件下的默认语句。
{      "match_all": {}  }
此查询常用于合并过滤条件。 比如说你需要检索所有的邮箱,所有的文档相关性都是相同的,所以得到的_score为1.
match 查询
match查询是一个标准查询,不管你需要全文本查询还是精确查询基本上都要用到它。
如果你使用 match 查询一个全文本字段,它会在真正查询之前用分析器先分析match一下查询字符:
{      "match": {          "tweet": "About Search"      }  }
如果用match下指定了一个确切值,在遇到数字,日期,布尔值或者not_analyzed 的字符串时,它将为你搜索你给定的值:
{ "match": { "age":    26           }}  { "match": { "date":   "2014-09-01" }}  { "match": { "public": true         }}  { "match": { "tag":    "full_text"  }}
提示: 做精确匹配搜索时,你最好用过滤语句,因为过滤语句可以缓存数据。
match查询只能就指定某个确切字段某个确切的值进行搜索,而你要做的就是为它指定正确的字段名以避免语法错误。
multi_match 查询
multi_match查询允许你做match查询的基础上同时搜索多个字段,在多个字段中同时查一个:
{      "multi_match": {          "query":    "full text search",          "fields":   [ "title", "body" ]      }  }
bool 查询
bool 查询与 bool 过滤相似,用于合并多个查询子句。不同的是,bool 过滤可以直接给出是否匹配成功, 而bool 查询要计算每一个查询子句的 _score (相关性分值)。
must:: 查询指定文档一定要被包含。must_not:: 查询指定文档一定不要被包含。should:: 查询指定文档,有则可以为文档相关性加分。
以下查询将会找到 title 字段中包含 "how to make millions",并且 "tag" 字段没有被标为 spam。 如果有标识为 "starred" 或者发布日期为2014年之前,那么这些匹配的文档将比同类网站等级高:
{      "bool": {          "must":     { "match": { "title": "how to make millions" }},          "must_not": { "match": { "tag":   "spam" }},          "should": [              { "match": { "tag": "starred" }},              { "range": { "date": { "gte": "2014-01-01" }}}          ]      }  }
提示: 如果bool 查询下没有must子句,那至少应该有一个should子句。但是 如果有must子句,那么没有should子句也可以进行查询。
上面内容来自: http://es.xiaoleilu.com/054_Query_DSL/70_Important_clauses.html 
ElasticSearch 查询(match和term)  http://www.cnblogs.com/yjf512/p/4897294.html
wildcards 查询
使用标准的shell通配符查询
参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html
以下查询能够匹配包含W1F 7HW和W2F 8HW的文档: 
GET /my_index/address/_search  {      "query": {          "wildcard": {              "postcode": "W?F*HW"          }      }  }
又比如下面查询 hostname 匹配下面shell通配符的:
{    "query": {      "wildcard": {        "hostname": "wxopen*"      }    }  }
regexp 查询
假设您只想匹配以W开头,紧跟着数字的邮政编码。使用regexp查询能够让你写下更复杂的模式: 
GET /my_index/address/_search  {      "query": {          "regexp": {              "postcode": "W[0-9].+"          }      }  }
这个正则表达式的规定了词条需要以W开头,紧跟着一个0到9的数字,然后是一个或者多个其它字符。
下面例子是所有以 wxopen 开头的正则
{    "query": {      "regexp": {        "hostname": "wxopen.*"      }    }  }
参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html
prefix 查询
以什么字符开头的,可以更简单地用 prefix,如下面的例子:
{    "query": {      "prefix": {        "hostname": "wxopen"      }    }  }
参考 : https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-prefix-query.html 
更多的查询命令,可以看: https://www.elastic.co/guide/en/elasticsearch/reference/current/term-level-queries.html#term-level-queries
短语匹配(Phrase Matching)
当你需要寻找邻近的几个单词时,你会使用match_phrase查询:
GET /my_index/my_type/_search
"query": {
"match_phrase": {
"title": "quick brown fox"
和match查询类似,match_phrase查询首先解析查询字符串来产生一个词条列表。然后会搜索所有的词条,
但只保留含有了所有搜索词条的文档,并且词条的位置要邻接。一个针对短语quick fox的查询不会匹配
我们的任何文档,因为没有文档含有邻接在一起的quick和box词条。
match_phrase查询也可以写成类型为phrase的match查询:
"match": {
"title": {
"query": "quick brown fox",
"type": "phrase"
小_曦
关注
关注
点赞
12
收藏
评论
es 的常用查询语法
Filter DSL term 过滤term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型): { "term": { "age":    26           }} { "term": { "date":   "2014-09-01" }} { "term": { "public": t
复制链接
扫一扫
专栏目录
ES常用查询语法汇总
河蟹堡的博客
03-11
1万+
总记录数
POST trade_prod_dy_*/_count
"query": {
"range": {
"created":{
"gte": "1646760441000"
模糊搜索
-- 对这个查询词不进行分词,必须完全匹配查询词才可以作为结果显示
"query" : {
"match_phrase" : {
"字段
es term 查询之一
最新发布
leveretz的博客
11-24
12
es term 查询之一
评论 2
您还未登录,请先
登录
后发表或查看评论
es语法详解
weixin_30619101的博客
07-17
4403
ES
agge 聚合
terms 条款,项
对text类型的字段进行分组,必须加上keyword,不加keyword ---->1 对该字段进行fileddata=true 2 会对该字段进行分词
GET /event-fw*/_search
"aggs": {
"test": {
"terms": {"field": "event_type.keyword"}
,"size...
【ES知识】ES基础查询语法一览
qq_34263207的博客
11-17
713
本篇文章主要带大家过一下ES的基础查询语法
ES数据查询
rusuo_1995的博客
10-08
1万+
转载自:ES基本查询语句教程 - @ 小浩 - 博客园
1.ES是基于Apache Lucene的开源分布式(全文)搜索引擎。
es除了全文搜索引擎之外,还可以这样描述它:
1、分布式的实时文件存储,每个字段都被索引并可被搜索
2、分布式的实时分析搜索引擎
3、可以扩展到成百上千台服务器,处理PB级结构化或非结构化数据。
ES的数据组织类比
Relational DB
Elasticsearch
数据库(database)
索引(indices)
表(tables)
ES基本查询语法_Kibana操作(持续更新)
weixin_44888044的博客
02-15
3857
ES索引user
1. ES查询索引下所有的数据
GET /user/_search?size=10
"query": {
"match_all": {}
2. ES单字段精确查询
GET /user/_search?size=10
"query": {
"match": {"userId": "180055"}
3. ES多字段精确查询(默认Kibana查询最多展示10条记录,可以通过设置size来展示更多匹配到的数据)
GET /user/_s
ElasticSearch(十一) Term level Queries JAVA API
weixin_30394981的博客
12-26
207
一、termquery精确查询 不分词
termQuery(
"name", "kimchy");
二、termsquery 相当于 IN 查询
termsQuery("tags", "blue", "pill");
三、rangequery 范围查询
rangeQuery("price") ...
ElasticSearch 常用的查询过滤语句
qiezikuaichuan的专栏
08-02
5324
http://www.cnblogs.com/ghj1976/p/5293250.html
query 和 filter 的区别请看: http://www.cnblogs.com/ghj1976/p/5292740.html
Filter DSL
term 过滤
term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文
ES中term、terms、match的区别
愤怒的豌豆炮的博客
10-27
3547
ES中term、terms、match的区别
term query会去倒排索引中寻找确切的term,它并不知道分词器的存在,这种查询适合keyword、numeric、date等明确值的
term:查询某个字段里含有某个关键词的文档
GET /customer/doc/_search/
"query": {
"term": {
"title": "blog"
terms:查询某个字段里含有多个关键词的文档
GET /customer/doc/_sea
es的term 、terms 和 match、range 和缓存
哎幽的成长
06-01
7126
es 的term 、terms 和 match、range 和缓存
本文是学习es的中文官网,自己的学习总结
整体数据插入及查询流程
数据存入
将新接收的数据存在buffer中,数据分词处理后,新建倒排索引 生成segment文件, (正常是在将数据写入磁盘时生成segment )但为了实时性, 把这个segment 刷到文件系统缓存中, 此时lucene可以检索这个新生成的segment, 为了保证数据的安全性(服务宕机丢失缓存数据), ES在在把数据写到内存buffer的时候同时还记录了一个trans
ES学习记录9——关于Term
jacksonary的博客
09-29
1533
9.2.4 Term Vector
 返回一个特定文档的信息和字段的统计信息,这里的文档可以索引中存储的文档,也可以是用户手动提供的,Term vector默认是实时的(而不是接近实时),这可以通过realtime=false进行更改,下面是个小栗子:
GET /twitter/_doc/1/_termvectors
// 也可以使用url中的参数指定为检索信息的字段
GET /twitter/...
ES 基本使用《三》--terms
let it go的博客
10-19
8787
1.查找多个精确值
term 查询对于查找单个值非常有用,但通常我们可能想搜索多个值。 如果我们想要查找价格字段值为
$20 或 $30 的文档该如何处理呢?
不需要使用多个 term 查询,我们只要用单个 terms 查询(注意末尾的 s ), terms 查询好比是 term 查询的复数形式(以英语名词的单复数做比)。
它几乎与 term 的使用方式一模一样,与指定单个
ElasticSearch 源码分析七 ES读取索引 Get操作
郭传志的博客
12-01
978
GET或者MGET,必须指定三元组 _index, _type,_id , 是根据_id从正排索引中获取内容。而search不指定_id, 根据关键词从倒排索引中获取内容。
程序入口TransportSingleShardAction的doExecute方法
可以看到是调用异步AsyncSingleAction
先看下异步action的构造函数
1.获取当前es的集群状态c...
【ES】查询详解
qq_41346335的博客
04-11
1394
文章目录一. dsl搜索数据准备1. mapping准备2. 查入数据二、dsl搜索1. 通过url构建(QueryString方式)1. 通过post构建(DSL方式)3. 查询所有4. 查询关键字term、terms(不分词)4. 查询关键字match_phrase4. 查询关键字operator4. 查询关键字minimum_should_match5. 根据id就行查询ids6. 根据词语搜索多个字段里是否包含(multi_match)7. 布尔查询8. 过滤器(post_filter)9. 排序1
ES的GET流程理解以及思考
weixin_40663800的博客
12-18
1829
GET流程
ES的读取分为GET和Search两种操作,这两种读取操作有较大的差异,GET/MGET必须指定三元组:_index、_type、_id。也就是说,根据文档id从正排索引中获取内容。而Search不指定_id,根据关键词从倒排索引中获取内容。
一个GET请求的简单例子,如下:
curl -XGET http://127.0.0.1:9200/secisland/_doc/1?pretty
响应:
"_index": "secisland",
"_type": "_doc",
ES 多字段查询
bohu83的博客
08-19
9503
一 序
使用ES搜索相关的指标:
Precision (查准率) - 尽可能返回较少的无关文档
Recall (查全率) - 尽量返回较多的相关文档
Ranking - 是否能够按照相关度进行排序
二 单属性查询
在 ES 中,Term 查询,对输入不做分词。所以除非是精准搜索不使用,大小写区别都查不出来。
通常就是使用match:(基于文本的分词,索引和搜索时都会进行分词)
POST movies/_search
"query": {
"match": {
..
ES查询
qq_45666593的博客
10-03
739
商品的搜索(ES)
一、关键字搜索(搜索框)
1、创建一个接口里面传入map(里面封装的是查询条件),返回也是一个map(里面是封装的查询上来的数据)
/**
* @Description:
* @Version: V1.0
*/
public interface SearchService {
/**
* 全文检索 万能型
* @param paramMap
* @return
*/
Map search(Map<String,Stri
ES学习之term与terms区别
sinat_34241861的博客
05-24
7187
term与terms均是用来做查询的,两者区别如下:
term 查询某个字段里含有某个关键词的文档
GET /index/type/_search/
"query": {
"term": {
"title": "blog"
terms 查询某个字段里含有多个关键词的文档
GET /index/type/_search/
"query": {
"terms": {
"title": [ "blog","first"]
ES的各种查询
chbxw
03-30
5874
一、准备数据
1.1、数据文档
字段名称
备注
createDate
sendDate
发送时间 date
longCode
发送长号码 如 16092389287811
Mobile
如 13000000000
corpName
发送公司名称,需要分词检索
smsContent
下发短信内容,需要分词检索
State
短信下发状态 0 成功 1 失败 integer
Operatorid
运营商编号1移动2联通3电信 integer
Province
es的term查询和全文本
laimao8079的博客
04-01
742
term查询
Term 是表达语意的最⼩单位。搜索和利⽤统计语⾔模型进⾏⾃然语⾔处理都需要处理 Term
term查询分为:
Term Level Query: Term Query / Range Query / Exists Query / Prefix Query /Wildcard Query
ES 中,Term 查询,对输⼊不做分词。会将输⼊作为⼀个整体,在倒排索引中查找准确的...
ES中match和term差别对比
热门推荐
张胜楠的博客
04-16
4万+
match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般模糊查找的时候,多用match,而精确查找时可以使用term。举个例子说明一下:{
"match": { "title": "my cat"}
}{
"bool": {
"should": [
{ "term": { "tit
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
小_曦
CSDN认证博客专家
CSDN认证企业博客
码龄11年
暂无认证
原创
50万+
周排名
118万+
总排名
2万+
访问
等级
113
积分
粉丝
获赞
评论
12
收藏
私信
关注
热门文章
es 的常用查询语法
26188
表空间使用率
137
分类专栏
oracle
1篇
es
hive
hbase
spark
最新评论
es 的常用查询语法
一只有梦想的咸鱼:
missing 用法已被剔除
es 的常用查询语法
wmhhd521:
对于刚刚接触的 这些查询已经能够很好的去使用了
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
表空间使用率
2017年1篇
2016年1篇
目录
目录
分类专栏
oracle
1篇
es
hive
hbase
spark
目录
评论 2
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值