ElasticsearchDSL语法的学习
DSL语法学习
(1)term和terms查询
(2)match查询
match_all: 查询所有文档
multi_match:可以指定多个字段
match_phrase:短语匹配查询
(3)rang范围查询
(4)wildcard查询
允许使用通配符*和?来进行查询
*代表0个或多个字符
?代表任意一个字符
(5)fuzzy模糊查询
value:查询的关键字
boost:查询的权值,默认值1.0
(6)highlight高亮显示
fields
(7)bool查询
must:满足的条件是----and
should:可以满足也可以不满足的天剑-----or
must_not:不需要的条件----not
(8)聚合查询
sum:求总和
avg:求平均值
count:统计数
cardinality: 值去重计数
<hr/>
查询:GET
GET/_search{ "query":{"term":{"user":"kimchy"}}}
查询document
#对age进行倒序查询 POST/pigg/_search
{
"query": {"match_all": {}},
"sort": [
{"age": {"order": "desc"}}
]
}
#查询前2条数据,from是从0开始的 POST/pigg/_search
{
"query": {"match_all": {}},
"sort": [
{"age" :{"order": "desc"}
],
"from": 0,
"size": 2
}
关键词查询 (精确查询)POST/aegis/positions/_search
{
"query": {
"term": {
"title":"米"
}
}
}
分词查询POST/aegis/positions/_search
{
"query":{
"match":{
"title":"小米"
}
}
}
(_source源,过滤设置,指定结果中所包括的字段有哪些)POST/aegis/positions/_search
{
"query":{
"match":{
"title":"小米"
}
},
"_source":["title","price"]
}
布尔查询 title是分词,brand是精确POST/aegis/positions/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"title":"小米"
}
},
{
"term":{
"brand":"米"
}
}
]
}
}
}
过滤器:过滤是针对搜索的结果进行过滤,过滤器主要的判断是文档是否匹配
过滤结果POST/aegis/positions/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"title":"小米"
}
},
{
"term":{
"brand":"米"
}
}
],
"filter":[
{
"range":{
"price":{
"gte":3298
}
}
}
]
}
}
}
过滤完在排序POST/aegis/positions/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"title":"小米"
}
},
{
"term":{
"brand":"米"
}
}
],
"filter":[
{
"range":{
"price":{
"gt":3298
}
}
}
]
}
},
"sort":[
{
"price":"desc"
}
]
}
高亮显示{
"query":{
"bool":{
"must":[
{
"match":{
"title":"小米"
}
},
{
"term":{
"brand":"米"
}
}
],
"filter":[
{
"range":{
"price":{
"gt":3298
}
}
}
]
}
},
"sort":[
{
"price":"desc"
}
],
"highlight":{
"pre_tags":["<tag1>"],
"post_tags":["</tag2>"],
"fields":{
"title":{},
"brand":{}
}
}
}
term query 查询适合keyword,numeric,dataterms,多个关键字查询
{
"query":{
"terms":{
"title":["米","为"]
}
}
}
返回版本号: "version":true
短语查询match_phrase_prefix前缀
{
"query":{
"match_phrase":{
"title":"小米"
}
}
}
通配符查询{
"query":{
"wildcard":{
"title":"小*"
}
}
}
模糊查询{
"query":{
"fuzzy":{
"title":{
"value":"小米"
}
}
}
}
{ "query":{
"match":{
"title":"小米"
}
},
"highlight":{
"fields":{
"title":{}
}
}
}
聚合查询 查询价格的总价{
"aggs":{
"price_sum":{
"sum":{
"field":"price"
}
}
}
}
聚合查询 根据价格计算数量
{
"size":0,
"aggs":{
"price_sum":{
"terms":{
"field":"price"
}
}
}
}
聚合查询 {
"query":{
"range":{
"price":{
"gt":2799
}
}
},
"aggs":{
"brandGroup":{
"terms":{
"field":"brand.keyword"
},
"aggs":{
"priceAVG":{
"avg":{
"field":"price"
}
}
}
}
}
}
聚合查询:brand出现错误,FeildData字段被禁用,要设置fielddata=true,或者加brand.keyword
{
"query":{
"match":{
"title":"小米"
}
},
"aggs":{
"all_tags":{
"terms":{
"field":"brand.keyword"
}
}
}
}
聚合查询求平均值,完了再给值 + 10{
"aggs":{
"avg_price":{
"avg":{
"script":{
"source":"doc.price.value + 10"
}
}
}
}
}
(9)嵌套查询:Nested
创建嵌套对象mappingPUT /earth_index
{
"mappings":{
"_doc":{
"properties":{
"title": {"type":"text"},
"body": {"type":"text"},
"comments":{
"type":"nested",
"properties":{
"name": {"type":"text"},
"comment": {"type":"text"},
"age": {"type":"short"},
"stars": {"type":"short"},
"date": {"type":"date"}
}
}
}
}
}
}
添加数据put /earth_index/_doc/1
{
"title":"Nest eggs",
"body":"Making your money work....",
"comment":[
{
"name":"JOhnSong",
"comment":"Great article1",
"age":22,
"stars":4,
"date":"2019-11-13"
},
{
"name":"superqiDream",
"comment":"Great article2",
"age":23,
"stars":5,
"date":"2019-11-14"
}
]
}
非嵌套查询get /earth_index/_doc/_search
{
"query":{
"bool":{
"must":[
{"match":{"comment.name":"superqiDream"}},
{"match":{"comment.age":23}}
]
}
}
}
POST /earth_index/_doc/_search{
"query":{
"nested":{
"path":"comment",
"query":{
"bool":{
"must":[
{
"match":{
"comment.name":"superqiDream"
}
},
{
"match":{
"comment.age":31
}
}
]
}
}
}
}
}
新增: POST
修改: PUT
删除:DELETE
以上是 ElasticsearchDSL语法的学习 的全部内容, 来源链接: utcz.com/z/510942.html