作为一个刚入行的菜鸟,每隔一段时间进行ES查询的时候,包括RestHighLevelClient操作及es-head的restful请求操作,都要去网上寻找相关文章熟悉这些操作,非常麻烦。现在准备将每次用到的东西进行整理,以避免后期花费时间去寻找资源。
一、基本查询介绍
1.term查询和terms查询
1.1 term : 去倒排索引中寻找确切的term,它并不知道分词器的存在(等值查询)
GET /user/student/_search
{
"query": {
"term": {
"字段": "值"
}
}
}
1.2 terms : 查询某个字段里含有多个关键词的文档(多个等值查询)
GET /user/student/_search
{
"query": {
"terms": {
"字段": [
"值1",
"值2"
]
}
}
}
2.match查询
2.1 match query知道分词器的存在,会对filed进行分词操作,然后再查询(将需要查询的语句进行分词,根据所有的分词查询该字段的倒排索引)
GET /user/student/_search
{
"query": {
"term": {
"字段": "值"
}
}
}
2.2 match_all:查询所有文档
GET /user/student/_search
{
"query": {
"match_all": {}
}
}
2.3
multi_match:可以指定多个字段(没用过,待测试后进行完善)
GET /user/student/_search
{
"query": {
"multi_match": {
"query": "lihua",
"fields": ["name","course.name"]
}
}
}
2.4 match_phrase_prefix:前缀匹配查询(相当于mysql的右模糊匹配)
GET /user/student/_search
{
"query": {
"match_phrase_prefix": {
"字段": "值"
}
}
}
2.5
match_phrase:短语匹配查询(没用过,待测试后进行完善)
GET /user/student/_search
{
"query": {
"match_phrase": {
"name": "lihua"
}
}
}