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,data

terms,多个关键字查询

{

"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

创建嵌套对象mapping

PUT /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

回到顶部