elasticsearch之查詢結果過濾


前言

在未來,一篇文檔可能有很多(是的,很多!不要被我們的示例這仨倆字段所迷惑)的字段,每次查詢都默認給我們返回全部,在數據量很大的時候,是的,比如我只想查姑娘的手機號,你一並給我個喜好啊、三圍什么的算什么?是要告訴灑家,hi,小老弟,要撩妹么?
所以,我們對結果做一些過濾,清清白白的告訴elasticsearch,小老弟,我只是查!水!表!

准備數據

PUT zhifou/doc/1
{
  "name":"顧老二",
  "age":30,
  "from": "gu",
  "desc": "皮膚黑、武器長、性格直",
  "tags": ["黑", "長", "直"]
}

結果過濾:_source

現在,在所有的結果中,我只需要查看nameage兩個屬性,其他的不要怎么辦?

GET zhifou/doc/_search
{
  "query": {
    "match": {
      "name": "顧老二"
    }
  },
  "_source": ["name", "age"]
}

如上例所示,在查詢中,通過_source來控制僅返回nameage屬性。

{
  "took" : 8,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.8630463,
    "hits" : [
      {
        "_index" : "zhifou",
        "_type" : "doc",
        "_id" : "1",
        "_score" : 0.8630463,
        "_source" : {
          "name" : "顧老二",
          "age" : 30
        }
      }
    ]
  }
}

在數據量很大的時候,我們需要什么字段,就返回什么字段就好了,提高查詢效率。整個三圍啥的可low了,有本事上圖!


歡迎斧正,that's all


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM