Skip to main content

ElasticSearch 查询语法

1.查询集群的基本运行状况-health

curl -XGET 'localhost:9200/_cat/health?v&pretty'

2.集群的节点信息

curl -XGET 'localhost:9200/_cat/nodes?v&pretty'

3.集群 中的索引信息

curl -XGET 'localhost:9200/_cat/indices?v&pretty'

4.根据id查询所需数据

curl -XGET  'http://localhost:9200/index/_type/id?'
"""
语法:ip +/索引/type/id?
"""

5.查询所有数据(浏览器默认返回10条数据)

"""
浏览器查询
"""
http://localhost:9200/index/type/_search?q=*

curl 查询

$ curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query": { "match_all": {} }
}'

6.分页查询 (from, size)

  • from 偏移,默认为0
  • size 返回的结果数,默认为10
curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query": { "match_all": {} },
"from":1,
"size":2
}'

7.多词条查询(term,terms)

term query会去倒排索引中寻找确切的term,它并不知道分词器的存在, 这种查询适合keyword、numeric、date等明确值的

  • term:查询某个字段里含有某个关键词的文档
curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query": {
"term": {
"title": "blog"
}
}
}'

9.指定查询结果的字段 (_source)

curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query":{
"match_all":{}
},
"_source":["product","account"],
"from": 1,"size": 1
}'

10.指定查询范围(range)

范围查询(range)即返回指定范围的文档,多用于数值型和日期型中。

curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query":{
"range":{
"publish_time":{
"lte":"2019/05/24"
}
}
},
"from": 1,
"size": 1
}'
  • gte :大于或等于
  • gt :大于
  • lte :小于或等于
  • lt :小于

11.排序(sort)

curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{
"query": {
"match_all": {}
},
"sort":[
{"publish_time":"desc"},
{"id":"asc"}
]
}'

12.prefix前缀匹配查询

curl -XGET 'localhost:9200/index/type/_search?pretty' -d '
{"query":
{"prefix":{
"ad_type":{
"value":"C" # 查询ad_type以C开头的内容
}
}
}
}'