URIsearch
GET twitter/_search?q=city:("北京" or "上海") &sort=DOB:desc&_source=city,age,DOB&size=2
twitter:指定索引
q:查詢sql, 欄位:值,如果沒有欄位,就是查詢所有欄位
sort:排序方式, 欄位:desc/asc
_source:返回_source中顯示的欄位,用逗號隔開
size:分頁大小
Lucene中幾種常用的Query
PhraseQuery
GET twitter/_search?q=city:"Shan tou" //shan tou有引號
等效於 Shan and tou,city欄位同時有Shan, tou,並且順序一致
TermQuery
GET twitter/_search?q=city:Shan tou
等效於Shan or tou, city欄位出現Shan或者tou
Request Body Search
全文字查詢
query的類別,match,match_phrase,query_string,simple_query_string
POST twitter/_search
{
"_source": ["city","age","DOB"], //顯示source欄位
"from":0,
"size":5,
"query": {
"match": { //類似北京 or 上海
"city":"北京 上海"
}
}
}
POST twitter/_search
{
"query": {
"match_phrase": {
"title":{
"query":"happy birthday"
}
}
}
}
POST twitter/_search
{
"query": {
"query_string": {
"fields":["city","age","DOB"], //查詢的欄位
"query": "北京"
}
}
}
POST twitter/_search
{
"query": {
"simple_query_string": {
"query": "Ruan Yiming",
"fields": ["name"],
"default_operator": "AND"
}
}
}
term查詢
Term查詢,對輸入不做分詞。 會將輸入作為一個整體,在倒排索引中查詢準確的詞項,並且使用相關度算分公式為每個包含該詞項的文件進行相關度算分
Term Query / Range Query / Exists Query / Prefix Query /Wildcard Query
GET twitter/_search
{
"query": {
"term": {
"city.keyword": { //最好通過keyword來查詢,因為如果是text,分詞後儲存格式會變化
"value": "北京"
}
}
}
}
GET twitter/_search
{
"query": {
"range": { //範圍
"age": {
"gte": 50
}
}
}
}
可以通過 Constant Score 將查詢轉換成⼀個 Filtering,避免算分,並利⽤快取,提⾼效能
GET twitter/_search
{
"query": {
"constant_score":{
"filter": {
"term": {
"city.keyword": "北京"
} }
}
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結