这篇文章主要介绍“elasticsearch的DSL查询方法有哪些”,在日常操作中,相信很多人在elasticsearch的DSL查询方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”elasticsearch的DSL查询方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联服务项目包括金堂县网站建设、金堂县网站制作、金堂县网页制作以及金堂县网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,金堂县网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到金堂县省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
query
1. term
查询,完全匹配,即不进行分词器分析
{
"query": {
"term": {
"": ""
}
}
} 2. match
查询,模糊匹配,根据你给定的字段进行分词器分析,只包含一部分关键字就行
{
"query": {
"match": {
"": ""
}
}
} 3. match_all
查询指定索引下的所有文档
{
"query": {
"match_all": {}
}
}通过 match_all 过滤出所有字段,然后通过 partial 再过滤出包含 preview 的字段和排除 title,price 的字段
{
"query": {
"match_all": {}
},
"partial_fields": {
"partial": {
"include": ["preview"],
"exclude": ["title,price"]
}
}
}4. match_phrase
短语查询,slop 定义的是关键词之间隔多少个未知单词
{
"query": {
"match_phrase": {
"query": "aaa,bbb",
"slop": 2
}
}
}5. multi_match
查询,可以指定多个字段
查询 filed1 和 filed2 这两个字段都包含 value 关键字的文档
{
"query": {
"multi_match": {
"query": "",
"fileds": ["", ""]
}
}
} 6. bool
布尔查询
must: 条件必须满足,相当于sql语句的andshould: 条件可以满足也可以不满足,相当于sql语句的ormust_not: 条件不需要满足,相当于sql语句的not
{
"query": {
"bool": {
"should": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"must": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"must_not": [
{"term": {"": ""}},
{"term": {"": ""}}
],
}
}
} 7. filter
查询同时,通过 filter 条件在不影响打分的情况下筛选出想要的数据
{
"query": {
"filtered": {
"query": {
"match_all": {},
},
"filter": {
"term": {
"": ""
}
}
}
}
} filter 之 bool 过滤查询
must: 条件必须满足,相当于sql语句的andshould: 条件可以满足也可以不满足,相当于sql语句的ormust_not: 条件不需要满足,相当于sql语句的not
{
"query": {
"filtered": {
"query": {
"match_all": {},
},
"filter": {
"bool": {
"should": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"must": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"must_not": [
{"term": {"": ""}},
{"term": {"": ""}}
],
}
}
}
}
} 没有 bool, 也可以直接使用 and、or、not
{
"query": {
"filtered": {
"query": {
"match_all": {},
},
"filter": {
"and": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"or": [
{"term": {"": ""}},
{"term": {"": ""}}
],
"not": [
{"term": {"": ""}},
{"term": {"": ""}}
],
}
}
}
} filter 之 range 范围查询
gt: 大于lt: 小于gte: 大于等于lte: 小于等于
{
"query": {
"filtered": {
"query": {
"match_all": {},
},
"filter": {
"range": {
"": {
"gt": "",
"gte": "",
"lt": "",
"lte": "",
}
}
}
}
}
} 8. boost
固定分数查询 我们查询到的每一个文档都有一个_score 参数,这是匹配度打分
constant_score: 固定分数查询关键字(它支持filter, 不支持match)boost: 指定固定分数字段
{
"query": {
"constant_score": {
"filter": {
"match": {
"": ""
}
},
"boost": 1
}
}
} agg
聚合分析
1. terms
分组,对应 sql 语句中的 group by
{
"aggs": {
"": {
"terms": {
"field": ""
}
}
}
} 2. cardinality
去重,对应 sql 语句中的 distinct
{
"aggs": {
"": {
"cardinality": {
"field": ""
}
}
}
} 3. avg
求平均值
{
"aggs": {
"": {
"avg": {
"field": ""
}
}
}
} 4. max
求平均值
{
"aggs": {
"": {
"max": {
"field": ""
}
}
}
} 5. min
求平均值
{
"aggs": {
"": {
"min": {
"field": ""
}
}
}
} 6. sum
求平均值
{
"aggs": {
"": {
"sum": {
"field": ""
}
}
}
} 7. range
按照指定区间分组
{
"aggs": {
"": {
"field": "",
"range": [
{"from": 0, "to": 20},
{"from": 20, "to": 40},
{"from": 40, "to": 60}
]
}
}
} 8. date_histogram
按时间统计
min_doc_count: 强制返回所有buckets,即使buckets可能为空extended_bounds: 只返回你的数据中最小值和最大值之间的buckets
{
"aggs": {
"": {
"date_histogram": {
"": "",
"interval": "month",
"format": "yyyy-MM-dd",
"min_doc_count" : 0,
"extended_bounds" : {
"min" : "2014-01-01",
"max" : "2014-12-31"
}
}
}
}
} collapse
使用collapse字段后,查询结果中[hits]中会出现[fields]字段,其中包含了去重后的user_id ES5.3版本之后才发布的 聚合&折叠只能针对keyword类型有效;
到此,关于“elasticsearch的DSL查询方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
网页题目:elasticsearch的DSL查询方法有哪些
分享地址:http://www.cqwzjz.cn/article/jcdcid.html


咨询
建站咨询
