在Elasticsearch中,查询数据主要是通过_search
API来进行的。以下是一些基础的查询操作示例:
基本查询示例:
1. 查询所有索引中的所有数据:
GET /_search
2. 查询特定索引中的数据:
GET /my_index/_search
3. 查询多个索引中的数据:
GET /my_index1,my_index2/_search
4. 使用Match All 查询查找所有文档:
GET /my_index/_search
{
"query": {
"match_all": {}
}
}
5. 使用Match 查询查找特定字段包含指定文本的文档:
GET /my_index/_search
{
"query": {
"match": {
"title": "Elasticsearch Tutorial"
}
}
}
6. 使用Term 查询查找某个字段确切值的文档:
GET /my_index/_search
{
"query": {
"term": {
"status": "active"
}
}
}
7. 范围查询(Range Query):
GET /my_index/_search
{
"query": {
"range": {
"age": {
"gte": 20,
"lte": 30
}
}
}
}
8. 结合过滤器(Filter)查询:
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{"match": {"title": "Elasticsearch"}},
{"range": {"age": {"gte": 20}}}
]
}
}
}
9. 排序和分页:
GET /my_index/_search
{
"query": {...}, // 任一查询语句
"sort": [
{"date": {"order": "desc"}}
],
"from": 0,
"size": 10
}
10. 返回特定字段:
GET /my_index/_search
{
"_source": ["title", "author"],
"query": {...} // 查询条件
}
11. 分页和聚合查询:
GET /my_index/_search
{
"query": {...},
"aggs": {
"by_author": {
"terms": {
"field": "author.keyword"
}
}
},
"size": 0
}
以上只是Elasticsearch查询功能的一部分,实际使用中还有更多复杂的查询类型和组合方式,例如 wildcard 查询、prefix 查询、phrase 查询、fuzzy 查询、nested 查询等。同时,还可以使用脚本字段(script_fields)进行自定义计算,以及众多的聚合(aggregations)功能进行数据分析。根据实际需求选择合适的查询方式和参数组合,即可进行高效的检索。