使用DSL查詢與過濾

2021-10-19 18:15:32 字數 1642 閱讀 8698

使用dsl查詢與過濾

1、全匹配(match_all)

普通搜尋(匹配所有文件):

get index_name/_search

}}

get index_name/_search}],

"filter": }}

}}

2、標準查詢(match和multi_match)

match查詢是乙個標準查詢,不管你需要全文本查詢還是精確查詢基本上都要用到它。

如果你使用match查詢乙個全文本欄位,它會在真正查詢之前用分析器先分析查詢字元:

}}

上面的搜尋會進行分詞,並找到包含查詢內容的文件,然後給出排序分值。

如果用 match 下指定了乙個確切值,在遇到數字,日期,布林值或者 not_analyzed的字串時,它將為你搜尋你給定的值,如:}}

}}multi_match 查詢允許你做 match查詢的基礎上同時搜尋多個字段:

}}

上面的搜尋同時在fullname和title欄位中匹配。

3、單詞搜尋與過濾(term和terms)

}, "filter":

} }

}}

terms搜尋與過濾(多條件過濾)

}}

minimum_match:至少匹配個數,預設為1

4、 組合條件搜尋與過濾(bool)

組合搜尋bool可以組合多個查詢條件為乙個查詢物件,查詢條件包括must、should和must_not。

例如:查詢愛好有美女,同時也有喜歡遊戲或運動,且出生於1990-06-30及之後的人。

}],

"should": [},

} ],

"must_not": [

}} ],

"filter": [...],

"minimum_should_match": 1}}

}ho

bby=美女 and (hobby=遊戲 or hobby=運動) and birth_date >= 1990-06-30

5、範圍查詢與過濾(range)

range過濾允許我們按照指定範圍查詢一批資料:

}}

}

上例中查詢年齡大於等於20並且小於30。

gt:> gte:>= lt:< lte:<=

7、存在和缺失過濾器(exists和missing)

}],"filter": }}

}}

7、前匹配搜尋與過濾(prefix)

和term查詢相似,前匹配搜尋不是精確匹配,而是類似於sql中的like 『key%』

}}

上例即查詢姓倪的所有人。

8、萬用字元搜尋(wildcard)

使用*代表0~n個,使用?代表1個。

}}

請求體查詢 查詢與過濾

elasticsearch 使用的查詢語言 dsl 擁有一套查詢元件,這些元件可以以無限組合的方式進行搭配。這套元件可以在以下兩種情況下使用 過濾情況 filtering context 和查詢情況 query context 當使用於 過濾情況 時,查詢被設定成乙個 不評分 或者 過濾 查詢。即,...

個人DSL使用全記錄

全部查詢 get student task status search 獲取資料結構 刪除索引 delete student task status 條件查詢 get student task status search filter adjust pure negative true,boost ...

字串查詢與過濾

今天和一愛學習的技術mm聊天,關於怎樣插入鍊錶節點的,她把節點插在鍊錶尾部,我給她提供了插入在首部的方法,更簡潔,然後她回了句 我的是最笨的 附帶大哭的qq表情 突然想給她開個玩笑,於是回了句 char tmp 10 char test 我的是最最笨的 strcpy tmp,strtok test,...