3 Elasticsearch深入搜尋 多欄位搜尋

2021-10-10 23:07:40 字數 1409 閱讀 4879

elasticsearch認證複習準備

##多欄位搜尋概念

用相同或不同的字串查詢乙個或多個字段

多字串查詢

get /_search},}

]}}}

注:兩條語句同時匹配的文件比只與一條語句匹配的文件得分要高

get /_search

}},}},},}

]}}]}

}}注:should中前兩個語句權重佔到了4/5

最佳字段搜尋

get /_search},}

]}}}

注:將任何與任一查詢匹配的文件作為結果返回,但只將最佳匹配的評分作為查詢的評分結果返回。

get /_search},}

],"tie_breaker": 0.3}}

}注:"tie_breaker": 0.3 ,最佳字段評分為主,其他字段評分為輔。

最佳字段、多數字段、跨字段的簡便寫法

get /_search

}注:和上邊最佳字段寫法效果一樣。

get /_search

}注:欄位名字通配

get /_search

}注:提公升單個字段權重

get /my_index/_search}}

注:多數字段方式,多個字段匹配比單個字段匹配分數更高。權重設定類似。

此方式存在的問題:

a、為多數字段匹配 任意 詞設計的,而不是在 所有字段 中找到最匹配的。——多個字段匹配得分比單個欄位高

b、、不能使用 operator 或 minimum_should_match 引數來降低次相關結果造成的長尾效應。——(效果作用在單個字段匹配的比例,而不是多個語句之間)

c、詞頻對於每個欄位是不一樣的,而且它們之間的相互影響會導致不好的排序結果。——字段之間的詞頻不一樣,會引發排序混亂。

4、詞中心式可以很好解決多欄位(字段中心式)中的問題

put /my_index

,"last_name": ,

"full_name": }}

}}注:多個欄位的資料索引到乙個欄位中,可以消除上述問題。

get /books/_search}}

注:cross_fields將所有字段當成乙個大字段

進行查詢

get /_validate/query?explain}}

注:詞中心式 會使用以下邏輯:

+(first_name:peter last_name:peter)

+(first_name:smith last_name:smith)

get /_validate/query?explain}}

注:字段中心式 會使用以下邏輯:

(+first_name:peter +first_name:smith)

(+last_name:peter  +last_name:smith)

3 Elasticsearch深入搜尋 部分匹配

elasticsearch認證複習準備 部分匹配概念 指定查詢詞的一部分並找出所有包含這部分片段的詞。簡單來說就是我輸入elas直接能給我匹配到elasticsearch這個詞。使用場景 匹配郵編 產品序列號或其他 not analyzed 未分析值,這些值可以是以某個特定字首開始,也可以是與某種模...

快取大小 Elasticsearch 快取深入詳解

elasticsearch 查詢的響應需要占用 cpu 記憶體資源,在複雜業務場景,會出現慢查詢,需要花費大量的時間。如何破局呢?增加集群硬體配置會有高昂硬體開銷。還有沒有其他方案呢?這時候會想到 快取。elasticsearch 有哪些快取,不同快取的應用場景是什麼呢?本文給出答案。以上問題都是實...

Elasticsearch 內部資料結構深度解讀

正如 elastic 官方文件所說 elasticsearch 特點之一是 分布式文件儲存。elasticsearch不會將資訊儲存為類似列資料庫的行 row 而是儲存為已序列化為json文件的複雜資料結構。當集群中有多個elasticsearch節點時,儲存的文件會分布在整個集群中,並且可以從任何...