您好,登錄后才能下訂單哦!
這篇文章主要介紹“elasticsearch的DSL查詢方法有哪些”,在日常操作中,相信很多人在elasticsearch的DSL查詢方法有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”elasticsearch的DSL查詢方法有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
查詢,完全匹配,即不進(jìn)行分詞器分析
{ "query": { "term": { "<field>": "<value>" } } }
查詢,模糊匹配,根據(jù)你給定的字段進(jìn)行分詞器分析,只包含一部分關(guān)鍵字就行
{ "query": { "match": { "<field>": "<value>" } } }
查詢指定索引下的所有文檔
{ "query": { "match_all": {} } }
通過(guò) match_all
過(guò)濾出所有字段,然后通過(guò) partial
再過(guò)濾出包含 preview
的字段和排除 title,price
的字段
{ "query": { "match_all": {} }, "partial_fields": { "partial": { "include": ["preview"], "exclude": ["title,price"] } } }
短語(yǔ)查詢,slop
定義的是關(guān)鍵詞之間隔多少個(gè)未知單詞
{ "query": { "match_phrase": { "query": "aaa,bbb", "slop": 2 } } }
查詢,可以指定多個(gè)字段
查詢 filed1
和 filed2
這兩個(gè)字段都包含 value
關(guān)鍵字的文檔
{ "query": { "multi_match": { "query": "<value>", "fileds": ["<field1>", "<field2>"] } } }
布爾查詢
must
: 條件必須滿足,相當(dāng)于 sql
語(yǔ)句的 and
should
: 條件可以滿足也可以不滿足,相當(dāng)于 sql
語(yǔ)句的 or
must_not
: 條件不需要滿足,相當(dāng)于 sql
語(yǔ)句的 not
{ "query": { "bool": { "should": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "must": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "must_not": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], } } }
查詢同時(shí),通過(guò) filter
條件在不影響打分的情況下篩選出想要的數(shù)據(jù)
{ "query": { "filtered": { "query": { "match_all": {}, }, "filter": { "term": { "<field>": "<value>" } } } } }
filter
之 bool
過(guò)濾查詢
must
: 條件必須滿足,相當(dāng)于 sql
語(yǔ)句的 and
should
: 條件可以滿足也可以不滿足,相當(dāng)于 sql
語(yǔ)句的 or
must_not
: 條件不需要滿足,相當(dāng)于 sql
語(yǔ)句的 not
{ "query": { "filtered": { "query": { "match_all": {}, }, "filter": { "bool": { "should": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "must": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "must_not": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], } } } } }
沒(méi)有 bool
, 也可以直接使用 and、or、not
{ "query": { "filtered": { "query": { "match_all": {}, }, "filter": { "and": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "or": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], "not": [ {"term": {"<field>": "<value>"}}, {"term": {"<field>": "<value>"}} ], } } } }
filter
之 range
范圍查詢
gt
: 大于
lt
: 小于
gte
: 大于等于
lte
: 小于等于
{ "query": { "filtered": { "query": { "match_all": {}, }, "filter": { "range": { "<field>": { "gt": "<value>", "gte": "<value>", "lt": "<value>", "lte": "<value>", } } } } } }
固定分?jǐn)?shù)查詢 我們查詢到的每一個(gè)文檔都有一個(gè)_score
參數(shù),這是匹配度打分
constant_score
: 固定分?jǐn)?shù)查詢關(guān)鍵字(它支持 filter
, 不支持 match)
boost
: 指定固定分?jǐn)?shù)字段
{ "query": { "constant_score": { "filter": { "match": { "<field>": "<value>" } }, "boost": 1 } } }
聚合分析
分組,對(duì)應(yīng) sql
語(yǔ)句中的 group by
{ "aggs": { "<tag_name>": { "terms": { "field": "<value>" } } } }
去重,對(duì)應(yīng) sql
語(yǔ)句中的 distinct
{ "aggs": { "<tag_name>": { "cardinality": { "field": "<value>" } } } }
求平均值
{ "aggs": { "<tag_name>": { "avg": { "field": "<value>" } } } }
求平均值
{ "aggs": { "<tag_name>": { "max": { "field": "<value>" } } } }
求平均值
{ "aggs": { "<tag_name>": { "min": { "field": "<value>" } } } }
求平均值
{ "aggs": { "<tag_name>": { "sum": { "field": "<value>" } } } }
按照指定區(qū)間分組
{ "aggs": { "<tag_name>": { "field": "<value>", "range": [ {"from": 0, "to": 20}, {"from": 20, "to": 40}, {"from": 40, "to": 60} ] } } }
按時(shí)間統(tǒng)計(jì)
min_doc_count
: 強(qiáng)制返回所有 buckets
,即使 buckets
可能為空
extended_bounds
: 只返回你的數(shù)據(jù)中最小值和最大值之間的 buckets
{ "aggs": { "<tag_name>": { "date_histogram": { "<field>": "<value>", "interval": "month", "format": "yyyy-MM-dd", "min_doc_count" : 0, "extended_bounds" : { "min" : "2014-01-01", "max" : "2014-12-31" } } } } }
使用collapse字段后,查詢結(jié)果中[hits]中會(huì)出現(xiàn)[fields]字段,其中包含了去重后的user_id ES5.3版本之后才發(fā)布的 聚合&折疊只能針對(duì)keyword類型有效;
到此,關(guān)于“elasticsearch的DSL查詢方法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。