Elasticsearch 查詢與過(guò)濾

elasticsearch.jpg

簡(jiǎn)介

Elasticsearch 使用的查詢語(yǔ)言(DSL)擁有一套查詢組件,這些組件可以以無(wú)限組合的方式進(jìn)行搭配。這套組件可以在以下兩種情況下使用:過(guò)濾上下文(filtering context)和查詢上下文(query context)。

說(shuō)明

當(dāng)使用于過(guò)濾上下文時(shí),查詢被設(shè)置成一個(gè)“不評(píng)分”或者“過(guò)濾”查詢。即這個(gè)查詢只是簡(jiǎn)單的問(wèn)一個(gè)問(wèn)題:“這篇文檔是否匹配?”?;卮鹨彩欠浅5暮?jiǎn)單,yes 或者 no ,二者必居其一。

典型用法

created 時(shí)間是否在 2013 與 2014 這個(gè)區(qū)間?
status 字段是否包含 published 這個(gè)單詞?
lat_lon 字段表示的位置是否在指定點(diǎn)的 10km 范圍內(nèi)?

當(dāng)使用于查詢上下文時(shí),查詢就變成了一個(gè)“評(píng)分”的查詢。和不評(píng)分的查詢類似,也要去判斷這個(gè)文檔是否匹配,同時(shí)它還需要判斷這個(gè)文檔匹配的有 多好(匹配程度如何)。

性能差異

過(guò)濾查詢(Filtering queries)只是簡(jiǎn)單的檢查包含或者排除,這就使得計(jì)算起來(lái)非?????紤]到至少有一個(gè)過(guò)濾查詢(filtering query)的結(jié)果是 “稀少的”(很少匹配的文檔),并且經(jīng)常使用不評(píng)分查詢(non-scoring queries),結(jié)果會(huì)被緩存到內(nèi)存中以便快速讀取,所以有各種各樣的手段來(lái)優(yōu)化查詢結(jié)果。

相反,評(píng)分查詢(scoring queries)不僅僅要找出匹配的文檔,還要計(jì)算每個(gè)匹配文檔的相關(guān)性,計(jì)算相關(guān)性使得它們比不評(píng)分查詢費(fèi)力的多。同時(shí),查詢結(jié)果并不緩存。

語(yǔ)法

query的基礎(chǔ)語(yǔ)法

GET movies/_search
{
  "query": {
    "match": {
      "title": {
        "query": "beautiful"
      }
    }
  }
}

filter的語(yǔ)法,一般跟著constant_score、bool

GET movies/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "title": "beautiful"
        }
      }
    }
  }
}

GET movies/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "title": "beautiful"
          }
        },
        {
          "range": {
            "movieId": {
              "gte": 94,
              "lte": 1000
            }
          }
        }
      ]
    }
  }
}

如何選擇查詢與過(guò)濾

通常的規(guī)則是,使用查詢(query)語(yǔ)句來(lái)進(jìn)行全文搜索或者其它任何需要影響相關(guān)性得分的搜索。除此以外的情況都使用過(guò)濾(filters)。

資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容