match all
GET /_search { "query": { "match_all": {} } }
match
GET /_search { "query": { "match": { "title": "my elasticsearch article" }} }
multi match
多字段搜索
GET /test_index/test_type/_search { "query":{ "multi_match":{ "query":"test", "fields":[ "test_field", "test_field1" ] } } }
range query
查询30以上员工
GET /company/employee/_search { "query":{ "range":{ "age":{ "gte":30 } } } }
term query
不分词查询
GET /test_index/test_type/_search { "query":{ "term":{ "test_field":"test hello" } } }
terms query
GET /_search { "query": { "terms": { "tag": [ "search", "full_text", "nosql" ] }} }
多条件组合
GET /website/article/_search { "query":{ "bool":{ "must":[ { "match":{ "title":"elasticsearch" } } ], "should":[ { "match":{ "content":"elasticsearch" } } ], "must_not":[ { "match":{ "author_id":111 } } ] } } }
{ "bool":{ "must":{ "match":{ "title":"how to make millions" } }, "must_not":{ "match":{ "tag":"spam" } }, "should":[ { "match":{ "tag":"starred" } } ], "filter":{ "range":{ "date":{ "gte":"2014-01-01" } } } } }
bool
must,must_not,should,filter
每个子查询都会计算一个document针对它的相关度分数,然后bool综合所有分数,合并为一个分数,当然filter是不会计算分数的
{ "bool":{ "must":{ "match":{ "title":"how to make millions" } }, "must_not":{ "match":{ "tag":"spam" } }, "should":[ { "match":{ "tag":"starred" } } ], "filter":{ "bool":{ "must":[ { "range":{ "date":{ "gte":"2014-01-01" } } }, { "range":{ "price":{ "lte":29.99 } } } ], "must_not":[ { "term":{ "category":"ebooks" } } ] } } } }
filter方式
GET /company/employee/_search { "query":{ "constant_score":{ "filter":{ "range":{ "age":{ "gte":30 } } } } } }