TypechoJoeTheme

IT技术分享

统计

04. ES使用GET和POST检索文档——ElasticSearch基础专栏

2022-09-04
/
0 评论
/
1,261 阅读
/
正在检测是否收录...
09/04

一、GET

1.1 查询指定文档

#根据_id查询文档详情
GET dbindex/_doc/文档_id
  • took:表示查询所花费的时间,以毫秒为单位。
  • timed_out:表示查询请求是否超时。
  • shards:表示总共查询了多少个分片,以及是否成功。
  • max_score:表示查询到的相关文档的分数,分数越高,匹配度就越高。
  • hits.total.value:表示找到了多少个匹配的文档。
  • hits.hits._score:表示当前文档和查询内容的匹配度,使用match_all时,此字段的值没有任何意义。

1.2 查询所有

查询指定索引库中所有的文档信息

GET dbindex/_doc/_search

或者

GET /dbindex/_search
{
  "query": { "match_all": {} }
}

1.3 排序查询

GET /dbindex/_search
{
  "query": { "match_all": {} },
  "sort":[
    {"age":{"order":"desc"}}
  ]
}

1.4 返回相应的字段

GET /dbindex/_search
{
  "query": { "match_all": {} },
  "_source":["name","age"],
  "sort":[
    {"age":{"order":"asc"}}
  ]
}

1.5 分页查询

GET /dbindex/_search
{
  "query": { "match_all": {} },
  "_source":["name","age"],
  "sort":[
    {"age":{"order":"asc"}}
  ],
  "from":0,
  "size":2
}

1.6 指定字段内的特定字词

GET /dbindex/_search
{
   "query": {
     "match":
     {
       "address": "中国,美国"
     }
   }
}
使用match相当于包含

1.7 段落匹配查询

GET /dbindex/_search
{
   "query": {
     "match":
     {
       "address": "中国 上海"
     }

   }
}
因为查询的时候两个内容之间有空格,所以被当作分隔符处理,查询内容被分词

如果想要查询的内容不被分词,可使用match_phrase查询,

GET /dbindex/_search
{
   "query": {
     "match_phrase":
     {
       "address": "中国 上海"
     }
   }
}

1.8 term精准查询

GET /dbindex/_doc/_search
{
  "query": {
     "term":
     {
       "address": "魏国"
     }
   }
}
term也可用在text类型上,此时查询不分词,查询会匹配分词的结果

1.9 bool多条件查询

  • must:必须匹配(返回结果中评分字段的结果有意义)。
  • must_not:过滤子句,必须不能匹配(返回结果中评分字段的结果无意义)。
  • should:选择性匹配,至少满足一条(返回结果中评分字段的结果有意义)。
  • filter:过滤子句,必须匹配(返回结果中评分字段的结果无意义)。
GET /dbindex/_search
{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "username" : "张三" }
      },
      "filter": {
        "term" : { "tags" : "production" }
      },
      "must_not" : {
        "range" : {
          "age" : { "gte" : 10, "lte" : 20 }
        }
      },
      "should" : [
        { "term" : { "tags1" : "env1" } },
        { "term" : { "tags1" : "deployed" } }
      ],
      "minimum_should_match" : 2,  // 表示命中两个term文档才会被返回
      "boost" : 1.0
    }
  }
}

1.10 bool和filter组合查询

GET dbindex/_doc/_search
{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "address":"杭州"
                    }
                }
            ],
            "filter":{
                "range":{
                    "age":{
                        "gte":10,
                        "lte":20
                    }
                }
            }
        }
    }
}

二、POST

POST /dbindex/_doc/_search
朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/2890/(转载时请注明本文出处及文章链接)