Elasticsearch----Query DSL

基本語法

{
    QUERY_NAME:{
        ARGUMENT:VALUE,
        ARGUMENT:VALUE,
        ...
    }
}
{
    QUERY_NAME:{
        FIELD_NAME:{
            ARGUMENT:VALUE,
            ARGUMENT:VALUE,
            ...
        }
    }
}

示例

GET /_search    //查詢所有的,默認(rèn)只會顯示10條document
{
  "query":{
    "match_all": {}
  }
}

GET /test_index/test_type/_search    //查詢字段“test_field”疮薇,包含“test”
{
  "query": {
    "match": {
      "test_field": "test"
    }
  }
}

組合搜索多個條件

//模擬數(shù)據(jù)
PUT /website/article/1
{
  "title":"my elasticsearch article",
  "content":"es is very good",
  "author_id":110
}
PUT /website/article/2
{
  "title":"my hadoop article",
  "content":"hadoop is very bad",
  "author_id":111
}
PUT /website/article/3
{
  "title":"my elasticsearch article",
  "content":"es is very bad",
  "author_id":112
}
//查詢 title必須包含elasticsearch劝堪,content可以不包含elasticsearch恬砂,author_id必須不為110
GET /website/article/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "elasticsearch"
          }
        }
      ],
      "should": [
        {
         "match": {
           "content":"elasticsearch"
         }
        }
      ],
      "must_not": [
        {
          "match": {
            "author_id": 110
          }
        }
      ]
    }
  }
}
//查詢title,content包含elasticsearch
GET /website/article/_search
{
  "query": {
    "multi_match": {
      "query": "elasticsearch",
      "fields": ["title","content"]
    }
  }
}
//查詢title,content必須包含elasticsearch芥颈,并且author_id必須不為110的
GET /website/article/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "elasticsearch",
            "fields": ["title","content"]
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "author_id": 110
          }
        }
      ]
    }
  }
}

定位不合法的搜索以及原因

//以這樣的語法憋槐,來判斷一個查詢json串是否合法
GET /test_index/test_type/_validate/query?explain
{
  "query":{
    "math":{
      "test_field":"test"
    }
  }
}
//出錯返回值
{
  "valid": false,
  "error": "org.elasticsearch.common.ParsingException: no [query] registered for [math]"
}
//正確返回值
{
  "valid": true,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "explanations": [
    {
      "index": "test_index",
      "valid": true,
      "explanation": "+test_field:test #(#_type:test_type)"
    }
  ]
}

filter與query的對比

//模擬數(shù)據(jù)
PUT /company/employee/1
{
  "address":{
    "country":"china",
    "provice":"beijing",
    "city":"beijing"
  },
  "name":"jack",
  "age":28,
  "join_date":"2017-01-01"
}
PUT /company/employee/2
{
  "address":{
    "country":"china",
    "provice":"jiangsu",
    "city":"nanjing"
  },
  "name":"tom",
  "age":30,
  "join_date":"2016-01-01"
}
PUT /company/employee/3
{
  "address":{
    "country":"china",
    "provice":"shanxi",
    "city":"xian"
  },
  "name":"marry",
  "age":35,
  "join_date":"2015-01-01"
}
//查詢年齡大于等于30姚建,同時join_date必須是2016-01-01
GET /company/employee/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "join_date": "2016-01-01"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 30
          }
        }
      }
    }
  }
}

filter與query的對比

  • filter呐舔,僅僅只是按照搜索條件過濾出需要的數(shù)據(jù)而已币励,不計算任何相關(guān)度分?jǐn)?shù),對相關(guān)度沒有任何影響
  • query珊拼,會去計算每個document相對于搜索條件的相關(guān)度食呻,并按照相關(guān)度進(jìn)行排序
  • 一般來說,如果是在進(jìn)行搜素,需要將最匹配搜索條件的數(shù)據(jù)先返回仅胞,那么用query每辟;如果只是要根據(jù)一些條件篩選出一部分?jǐn)?shù)據(jù),不關(guān)注其排序干旧,那么用filter
  • 如果你希望越符合這些搜索條件的document越排在前面返回渠欺,那么這些搜索條件就要放在query中;如果不希望一些搜索條件來影響你的document排序椎眯,那么就放在filter中即可
  • filter不需要計算相關(guān)度分?jǐn)?shù)挠将,不需要按照相關(guān)度分?jǐn)?shù)進(jìn)行排序,同時還有內(nèi)置的自動cache最常使用filter的數(shù)據(jù)编整;query則相反捐名,要計算相關(guān)度分?jǐn)?shù),還需要按照分?jǐn)?shù)排序闹击,而且無法cache結(jié)果。所以成艘,filter的速度會更快些
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赏半,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子淆两,更是在濱河造成了極大的恐慌断箫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秋冰,死亡現(xiàn)場離奇詭異仲义,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)剑勾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門埃撵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人虽另,你說我怎么就攤上這事暂刘。” “怎么了捂刺?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵谣拣,是天一觀的道長。 經(jīng)常有香客問我族展,道長森缠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任仪缸,我火速辦了婚禮贵涵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己独悴,他們只是感情好例书,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刻炒,像睡著了一般决采。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟奥,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天树瞭,我揣著相機(jī)與錄音,去河邊找鬼爱谁。 笑死晒喷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的访敌。 我是一名探鬼主播凉敲,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寺旺!你這毒婦竟也來了爷抓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤阻塑,失蹤者是張志新(化名)和其女友劉穎蓝撇,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陈莽,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡渤昌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了走搁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片独柑。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖私植,靈堂內(nèi)的尸體忽然破棺而出群嗤,到底是詐尸還是另有隱情,我是刑警寧澤兵琳,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布狂秘,位于F島的核電站,受9級特大地震影響躯肌,放射性物質(zhì)發(fā)生泄漏者春。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一清女、第九天 我趴在偏房一處隱蔽的房頂上張望钱烟。 院中可真熱鬧,春花似錦、人聲如沸拴袭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拥刻。三九已至怜瞒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間般哼,已是汗流浹背吴汪。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蒸眠,地道東北人漾橙。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像楞卡,于是被迫代替她去往敵國和親霜运。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理蒋腮,服務(wù)發(fā)現(xiàn)觉渴,斷路器,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 本文經(jīng)過大量細(xì)致的優(yōu)化后徽惋,收錄于我的新書《編程之法》第六章中,新書...
    Helen_Cat閱讀 7,415評論 1 39
  • 歡迎訪問我的博客查看原文:http://wangnan.tech 注:文本整理自《ELKstack權(quán)威指南》 目錄...
    GhostStories閱讀 10,407評論 0 7
  • Solr&ElasticSearch原理及應(yīng)用 一座韵、綜述 搜索 http://baike.baidu.com/it...
    樓外樓V閱讀 7,285評論 1 17
  • 狀態(tài)碼用來告訴HTTP客戶端险绘,HTTP服務(wù)器是否產(chǎn)生了預(yù)期的Response. HTTP/1.1中定義了5類狀態(tài)碼...
    Jackson_Z閱讀 292評論 0 0