鍍金池/ 教程/ Java/ williamzhao
創(chuàng)建索引
文檔局部更新
映射
查詢與過濾條件的合并
取回階段
查詢地理形狀
相關(guān)性簡(jiǎn)介
動(dòng)態(tài)索引
處理沖突
geohash單元聚合器
主分片和復(fù)制分片如何交互
自定義分析器
下一步
過濾順序
空集群
數(shù)據(jù)吞吐
地理坐標(biāo)點(diǎn)
嵌套-映射
動(dòng)態(tài)映射
在查詢中使用已索引的形狀
局部更新文檔
包含,而不是相等
范圍
檢索文檔
映射及分析
結(jié)語
結(jié)構(gòu)化查詢 Query DSL
驗(yàn)證查詢
查找準(zhǔn)確值
Geohashes
結(jié)構(gòu)化搜索
復(fù)合核心字段類型
嵌套-集合
與Elasticsearch交互
請(qǐng)求體查詢
自定義動(dòng)態(tài)索引
簡(jiǎn)易搜索
索引一個(gè)文檔
地理形狀
緩存地理位置過濾器
多文檔模式
  • 1.
分布式搜索的執(zhí)行方式
安裝Elasticsearch
地理位置聚合
分析和分析器
元數(shù)據(jù):_all 字段
地理坐標(biāo)盒模型過濾器
類型和映射
合并段
查詢多個(gè)準(zhǔn)確值
嵌套-查詢
  • 1.
為什么是奇怪的格式?
Geohashes 映射
關(guān)于緩存
開始第一步
為了搜索,你懂的
分布式的特性
添加索引
確切值(Exact values) vs. 全文文本(Full text)
掃描和滾屏
相關(guān)性排序
教程小結(jié)
數(shù)據(jù)字段
增加故障轉(zhuǎn)移
按距離排序
索引管理
分布式文檔存儲(chǔ)
geohash單元過濾器
嵌套排序
檢索多個(gè)文檔
新建、索引和刪除文檔
Geohashes
檢索文檔
減少內(nèi)存占用
重新索引數(shù)據(jù)
檢索文檔
按距離聚合
什么是文檔?
繼續(xù)擴(kuò)展
集群健康
入門
映射(mapping)
近實(shí)時(shí)搜索
地理形狀的過濾與緩存
集群內(nèi)部工作方式
應(yīng)對(duì)故障
范圍(邊界)聚合器
分析
分頁
刪除文檔
倒排索引
索引地理形狀
嵌套-對(duì)象
  • 1.
橫向擴(kuò)展
查詢階段
元數(shù)據(jù):_source 字段
多索引和多類別
路由文檔到分片
索引設(shè)置
williamzhao
多值字段字符串排序
創(chuàng)建一個(gè)新文檔
配置分析器
地理形狀
更新整個(gè)文檔
面向文檔
處理 Null 值
映射地理形狀
使文本可以被搜索
索引別名和零停機(jī)時(shí)間
通過地理坐標(biāo)點(diǎn)過濾
地理距離過濾器
搜索——基本的工具
空搜索
搜索選項(xiàng)
更新時(shí)的批量操作
最重要的查詢過濾語句
結(jié)語
組合過濾
地理位置聚合
根對(duì)象
默認(rèn)映射
文檔 ID
持久化變更
檢查文檔是否存在
入門
地理坐標(biāo)點(diǎn)

williamzhao

translate by williamzhao

查詢與過濾

前面我們講到的是關(guān)于結(jié)構(gòu)化查詢語句,事實(shí)上我們可以使用兩種結(jié)構(gòu)化語句: 結(jié)構(gòu)化查詢(Query DSL)和結(jié)構(gòu)化過濾(Filter DSL)。 查詢與過濾語句非常相似,但是它們由于使用目的不同而稍有差異。

一條過濾語句會(huì)詢問每個(gè)文檔的字段值是否包含著特定值:

  • created 的日期范圍是否在 20132014 ?

  • status 字段中是否包含單詞 "published" ?

  • lat_lon 字段中的地理位置與目標(biāo)點(diǎn)相距是否不超過10km ?

一條查詢語句與過濾語句相似,但問法不同:

查詢語句會(huì)詢問每個(gè)文檔的字段值與特定值的匹配程度如何?

查詢語句的典型用法是為了找到文檔:

  • 查找與 full text search 這個(gè)詞語最佳匹配的文檔

  • 查找包含單詞 run ,但是也包含runs, running, jogsprint的文檔

  • 同時(shí)包含著 quick, brownfox --- 單詞間離得越近,該文檔的相關(guān)性越高

  • 標(biāo)識(shí)著 lucene, searchjava --- 標(biāo)識(shí)詞越多,該文檔的相關(guān)性越高

一條查詢語句會(huì)計(jì)算每個(gè)文檔與查詢語句的相關(guān)性,會(huì)給出一個(gè)相關(guān)性評(píng)分 _score,并且 按照相關(guān)性對(duì)匹配到的文檔進(jìn)行排序。 這種評(píng)分方式非常適用于一個(gè)沒有完全配置結(jié)果的全文本搜索。

性能差異

使用過濾語句得到的結(jié)果集 -- 一個(gè)簡(jiǎn)單的文檔列表,快速匹配運(yùn)算并存入內(nèi)存是十分方便的, 每個(gè)文檔僅需要1個(gè)字節(jié)。這些緩存的過濾結(jié)果集與后續(xù)請(qǐng)求的結(jié)合使用是非常高效的。

查詢語句不僅要查找相匹配的文檔,還需要計(jì)算每個(gè)文檔的相關(guān)性,所以一般來說查詢語句要比 過濾語句更耗時(shí),并且查詢結(jié)果也不可緩存。

幸虧有了倒排索引,一個(gè)只匹配少量文檔的簡(jiǎn)單查詢語句在百萬級(jí)文檔中的查詢效率會(huì)與一條經(jīng)過緩存 的過濾語句旗鼓相當(dāng),甚至略占上風(fēng)。 但是一般情況下,一條經(jīng)過緩存的過濾查詢要遠(yuǎn)勝一條查詢語句的執(zhí)行效率。

過濾語句的目的就是縮小匹配的文檔結(jié)果集,所以需要仔細(xì)檢查過濾條件。

什么情況下使用

原則上來說,使用查詢語句做全文本搜索或其他需要進(jìn)行相關(guān)性評(píng)分的時(shí)候,剩下的全部用過濾語句