查詢
- 一個基礎(chǔ)的查詢
{
"query":{
"match_all":{} //匹配所有
},
"sort":{
"排序字段名": "desc"/"asc" //降序或生序
},
"from":10,//分頁參數(shù)
"size":10
}
- 字段匹配
match匹配非字符串哨鸭,就是精確查詢斩熊,否則就是全文檢索(倒排索引)里逆,
對內(nèi)容進(jìn)行分詞进胯,每個包含單詞的都會被匹配
每個匹配文檔,都有自己的得分原押,并且按照得分從高到低排序
"query":{
"match":{
"字段名":"內(nèi)容"
}
}
- 精確匹配
字段名.keyword即可
- 短語匹配
不分詞胁镐,內(nèi)容當(dāng)做不可分割的參數(shù)去查詢,所有包含完整的內(nèi)容的文檔都會被匹配(%xxx%)
"query":{
"match_phrase":{
"字段名":"內(nèi)容"
}
}
- 多字段匹配
相當(dāng)于s <字段1 匹配 "內(nèi)容" or 字段2 匹配 "內(nèi)容">诸衔,會進(jìn)行分詞檢索
"query":{
"multi_match":{
"query":"一個內(nèi)容",
"fields":["字段1","字段2"]
}
}
- bool查詢盯漂,相當(dāng)于sql 里邊的 and or 這些的
"query":{
"bool":{
"must":[ //必須匹配
{"match":{
"字段名":"內(nèi)容" ,
}},
...
]笨农,
"must_not":[ //必須不匹配
{"match":{
"字段名":"內(nèi)容" ,
}}就缆,
]
}
}
must = 必須
must_not = 必須不包括
should = 應(yīng)該滿足,不滿足也關(guān)系,滿足了得分高..
filter = 不貢獻(xiàn)得分的過濾
如果must谒亦、should被匹配竭宰,都會獲得一些得分,而過濾器份招,不會貢獻(xiàn)得分
- term
找精確值用term,文本查找不要用term
"query":{
"term":{
"字段名":"內(nèi)容"
}
}
聚合
相當(dāng)于 group by
"aggs":{
"<聚合的名字>":{
"<聚合類型>":{
<具體參數(shù)>
}
}
...
}
聚合類型
term = count(xxx)
avg = avg(xxx)
父聚合可以嵌套子聚合
"aggs":{
"<聚合的名字>":{
"<聚合類型>":{
<具體參數(shù)>
},
"aggs":{
"<聚合的名字>":{
"<聚合類型>":{
<具體參數(shù)>
}
}
}
}
...
}
其他
- 返回自定義字段
"_source":["字段A","字段B"]