DSL查詢分類
Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢。常見的查詢類型包括:
- 查詢所有:查詢出所有數(shù)據(jù),一般測試用。例如:match_all
- 全文檢索(full text)查詢:利用分詞器對用戶輸入內(nèi)容分詞,然后去倒排索引庫中匹配。例如:
-
- match_query
- multi_match_query
- 精確查詢:根據(jù)精確詞條值查找數(shù)據(jù),一般是查找keyword、數(shù)值、日期、boolean等類型字段。例如:
-
- ids
- range
- term
- 地理(geo)查詢:根據(jù)經(jīng)緯度查詢。例如:
-
- geo_distance
- geo_bounding_box
- 復(fù)合(compound)查詢:復(fù)合查詢可以將上述各種查詢條件組合起來,合并查詢條件。例如:
-
- bool
- function_score
查詢的語法基本一致:
GET?/indexName/_search
{
??"query":?{
????"查詢類型":?{
??????"查詢條件":?"條件值"
????}
??}
}
全文檢索查詢
使用場景
全文檢索查詢的基本流程如下:
- 對用戶搜索的內(nèi)容做分詞,得到詞條
- 根據(jù)詞條去倒排索引庫中匹配,得到文檔id
- 根據(jù)文檔id找到文檔,返回給用戶
比較常用的場景包括:
- 商城的輸入框搜索
- 百度輸入框搜索
因為是拿著詞條去匹配,因此參與搜索的字段也必須是可分詞的text類型的字段。
基本語法
常見的全文檢索查詢包括:
- match查詢:單字段查詢
- multi_match查詢:多字段查詢,任意一個字段符合條件就算符合查詢條件
match查詢語法如下:
GET?/indexName/_search
{
??"query":?{
????"match":?{
??????"FIELD":?"TEXT"
????}
??}
}
mulit_match語法如下:
GET?/indexName/_search
{
??"query":?{
????"multi_match":?{
??????"query":?"TEXT",
??????"fields":?["FIELD1",?" FIELD12"]
????}
??}
}
總結(jié)
match和multi_match的區(qū)別是什么?文章來源:http://www.zghlxwxcb.cn/news/detail-518409.html
- match:根據(jù)一個字段查詢
- multi_match:根據(jù)多個字段查詢,參與查詢字段越多,查詢性能越差
?文章來源地址http://www.zghlxwxcb.cn/news/detail-518409.html
到了這里,關(guān)于DSL查詢分類與全文檢索查詢的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!