Elasticsearch-查詢
阿新 • • 發佈:2020-08-04
想找到所有title欄位以cri開始的文件
{
"query":{
"prefix":{
"title":"cri"
}
}
}
使用者向搜尋框中輸入單詞crme,而不是crime,執行模糊查詢的最簡單形式
{ "query":{ "fuzzy":{ "title":"crme" } } }
萬用字元查詢允許我們在查詢值中使用*和?等萬用字元。此外,萬用字元查詢跟詞條查詢在內容方面非常類似。可以傳送一下查詢,來匹配所有包含cr?me詞條的文件,這裡?表示任意字元:
{
"query":{
"wildcard":{
"title":"cr?me"
}
}
}
範圍查新,要找到year欄位從1700到1900的所有圖書,可以執行以下查詢:
{ "query":{ "range":{ "year":{ "gte":1700, "lte":1900 } } } }
gte:範圍查詢將匹配欄位值大於或等於此引數值的文件。
gt:範圍查詢將匹配欄位值大於此引數值的文件。
lte:範圍查詢將匹配欄位值小於或等於此引數值的文件。
lt:範圍查詢將匹配欄位值小於此引數值的文件。
正則表示式查詢示例如下所示:
{ "query":{ "regexp":{ "title":{ "value":"cr.m[ae]", "boost":10 } } } }
假設我們想要找到所有這樣的文件:在title欄位中含有crime詞條,並且year欄位可以在也可以不在1900~2000的範圍裡,在otitle欄位中不可以包含nothing詞條。用布林查詢的話,類似於下面的程式碼:
{
"query":{
"bool":{
"must":{
"term":{
"title":"crime"
}
},
"should":{
"range":{
"year":{
"from":1900,
"to":2000
}
}
},
"must_not":{
"term":{
"otitle":"nothing"
}
}
}
}
}
在title欄位搜尋Catch-22並向其新增過濾器.它返回給定title的所有文件,但結果縮小到僅在1961年出版的書
{
"query":{
"match":{
"title":"Catch-22"
}
},
"post_filter":{
"term":{
"year":1961
}
}
}