参考资料:

https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/_search_lite.htm

1.查询es数据的方法

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query":{
"match_all":{}
}
}'

2.轻量搜索

查询index=megacorp, doc_type=employee的所有文档

curl -XGET 'http://localhost:9200/megacorp/employee/_search?pretty'

查询index=megacorp, doc_type=employee且last_name=Smith的所有文档

curl -XGET 'http://localhost:9200/megacorp/employee/_search?q=last_name:Smith'

3.查询表达式搜索,使用领域特定语言(DSL)

查询index=megacorp, doc_type=employee且last_name=Smith的所有文档

curl -XGET 'http://localhost:9200/megacorp/employee/_search' -d '
{
"query" : {
"match" : {
"last_name" : "Smith"
}
}
}'

4.全文搜索

下面的语句中未必会匹配上完整的"rock climbing",而是会根据相关性打分,单独的"rock"也有可能匹配上。

GET /megacorp/employee/_search
{
"query" : {
"match" : {
"about" : "rock climbing"
}
}
}

5.短语搜索

如果想匹配完整的"rock climbing",需要将match改为match_phrase。这样"rock"就无法匹配了。 不过"I like rock climbing"这样的语句还是能匹配上的。

GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
}
}

6.高亮搜索 highlight参数

高亮显示about字段

GET /megacorp/employee/_search
{
"query" : {
"match_phrase" : {
"about" : "rock climbing"
}
},
"highlight": {
"fields" : {
"about" : {}
}
}
}

7.聚合

查询特定兴趣爱好员工的平均年龄

GET /megacorp/employee/_search
{
"aggs" : {
"all_interests" : {
"terms" : { "field" : "interests" },
"aggs" : {
"avg_age" : {
"avg" : { "field" : "age" }
}
}
}
}
}
04-20 15:36