- URI Search :在URL中使用查询参数。
- Request Body Search:使用基于JSON格式的更加完备的Query DSL(Domain Specific Language)。
指定查询的索引
语法 | 范围 |
---|
/_search | 集群上所有的索引 |
/index1/_search | index1 |
/index1,index2/_search | index1和index2 |
/index*/_search | 以index开头的索引 |
URI查询
- 使用"q"查询指定字符串。
- 例如,在index1中查询name为Mike的记录:curl -XGET “http://elasticsearch:9200/index1/_search?q=name:Mike”。
- GET /movies/_search?q=2012&df=title&sort=year:desc&from=0&size=10&timeout=1s
{
“profile”: “true”
} - q指定查询语句
- df指定查询字段,不指定会对所有字段进行查询。
- sort、from、size排序和分页参数
- profile可以查看查询的执行过程
- q=2012&df=title 等价于 q=title:2012
- q=beautiful mind 意思是全文搜索beautiful或mind
- q="beautiful mind"意思是全文搜索beautiful 和mind 且顺序一致
- q=(beautiful mind)意思是全文搜索beautiful 和mind ,不要求顺序
Request Body
- 例如,查询index1中的所有文文档: curl -XGET “http://elasticsearch:9200/index1/_search” -H
{
"sort":[{"order_date":"desc"}]
"_source":["order_date","category"],
"from":10,
"size":20,
"query":{
"match_all":{}
}
}
- POST和GET都支持。
- from和size是分页参数,sort是排序参数。获取靠后的翻页成本较高。
- _source是需要的字段,不写默认返回所有字段
搜索的相关性
- 搜索是用户和搜索引擎的对话,用户关心的是搜索结果的相关性:
- 是否可以找到所有相关内容。
- 有多少不相关的内容被返回了。
- 文档打分是否合理。
- 结合业务需求,平衡结果排名。
- 衡量相关性:
- Precision(查准率):尽可能少返回无关文档。正确返回/所有返回
- Recall(查全率):尽量多返回相关文档。正确返回/所有应该返回的结果
- Ranking(排序):是否能够按照相关性排序。