Elasticsearch 各種query語法
阿新 • • 發佈:2020-12-12
技術標籤:Elasticsearch實戰elasticsearch
Elasticsearch實戰
準備幾條資料
POST /vehicle/car/_bulk
{"index":{"_id":1}}
{"name":"benz","detail":"suv sport","price":550000,"tags":["SUV","Sport"]}
{"index":{"_id":2}}{"name":"bmw","detail":"benz zs","price":350000,"tags":["Zs"]}
match all
匹配所有
GET /vehicle/car/_search
{
"query": {
"match_all": {}
}
}
match
匹配filed包含文字
GET /vehicle/car/_search { "query": { "match": { "name": "benz" } } }
multi match
和match類似,使用多個filed匹配
GET /vehicle/car/_search
{
"query": {
"multi_match": {
"query": "benz",
"fields": ["name","detail"]
}
}
}
range query
range 範圍查詢,可以放在query或filter裡面,在query裡面會對相關度分數產生影響
GET /vehicle/car/_search { "query": { "range": { "price": { "gte": 300000, "lte": 400000 } } } }
term query
term是代表完全匹配,也就是精確查詢,搜尋前不會再對搜尋詞進行分詞拆解。
舉個例子:
{
"match": { "title": "my cat"}
}match會拆分my和cat,相當於term("my")或term("cat“)
{
"bool": {
"should": [
{ "term": { "title": "my" }},
{ "term": { "title": "cat" }}
]
}
}
GET /vehicle/car/_search
{
"query": {
"term": {
"name": {
"value": "benz"
}
}
}
}
terms query
同term,指定多個搜尋詞
GET /vehice/car/_search
{
"query": {
"terms": {
"name": [
"benz",
"bmw"
]
}
}
}
existquery
field不能為空(null)
GET /vehicle/car/_search
{
"query": {
"exists": {
"field": "name"
}
}
}
歡迎關注公眾號《小馬JAVA》