ElasticSearch最佳入門實踐(五十)組合查詢
1、例子
GET /website/article/_search { "query": { "bool": { "must": [ { "match": { "title": "elasticsearch" } } ], "should": [ { "match": { "content": "elasticsearch" } } ], "must_not": [ { "match": { "author_id": 111 } } ] } } }
bool可以包含如下組合條件
must,must_not,should,filter
注意:
每個子查詢都會計算一個document針對它的相關度分數,然後bool綜合所有分數,合併為一個分數,當然filter是不會計算分數的
相關推薦
ElasticSearch最佳入門實踐(五十)組合查詢
1、例子 GET /website/article/_search { "query": { "bool": { "must": [ { "match": { "title": "elasticsea
ElasticSearch最佳入門實踐(五十二)定製搜尋結果的排序規則
1、預設排序規則 預設情況下,是按照_score降序排序的 然而,某些情況下,可能沒有有用的_score,比如說filter GET /_search { "query" : { "bool" : { "filter
ElasticSearch最佳入門實踐(五十七)分散式搜尋引擎核心解密之fetch phase
1、fetch phbase工作流程 (1)coordinate node構建完priority queue之後,就傳送mget請求去所有shard上獲取對應的document (2)各個shard將document返回給coordinate node
ElasticSearch最佳入門實踐(五十六)分散式搜尋引擎核心解密之query phase
1、query phase (1)搜尋請求傳送到某一個coordinate node,構構建一個priority queue,長度以paging操作from和size為準,預設為10 (2)coordinate node將請求轉發到所有shard,每個sha
ElasticSearch最佳入門實踐(五十五)核心級知識點之 doc value 初步探祕
搜尋的時候,要依靠倒排索引;排序的時候,需要依靠正排索引,看到每個document的每個field,然後進行排序,所謂的正排索引,其實就是doc values 在建立索引的時候,一方面會建立倒排索引,以供搜尋用;一方面會建立正排索引,也就是doc values,
ElasticSearch最佳入門實踐(五十四)相關度評分 TF & IDF 演算法解密
1、演算法介紹 relevance score演算法,簡單來說,就是計算出,一個索引中的文字,與搜尋文字,他們之間的關聯匹配程度 Elasticsearch使用的是 term frequency / inverse document frequency演算法
ElasticSearch最佳入門實踐(五十九)基於scoll技術滾動搜尋大量資料
如果一次性要查出來比如10萬條資料,那麼效能會很差,此時一般會採取用scoll滾動查詢,一批一批的查,直到所有資料都查詢完處理完 使用scoll滾動搜尋,可以先搜尋一批資料,然後下次再搜尋一批資料,以此類推,直到搜尋出全部的資料來 scoll搜尋會在第一次搜尋的
ElasticSearch最佳入門實踐(五十八)搜尋相關引數梳理以及bouncing results問題解決方案
1、preference 決定了哪些shard會被用來執行搜尋操作 _primary, _primary_first, _local, _only_node:xyz, _prefer_node:xyz, _shards:2,3 bounci
ElasticSearch最佳入門實踐(四十)分詞器的內部組成到底是什麼,以及內建分詞器的介紹
1、什麼是分詞器 一個分詞器,很重要,將一段文字進行各種處理,最後處理好的結果才會拿去建立倒排索引 切分詞語,normalization(提升recall召回率) 給你一段句子,然後將這段句子拆分成一個一個的單個的單詞,同時對每個單詞進行normalizat
ElasticSearch最佳入門實踐(三十)寫一致性原理以及quorum機制深入剖析
1、consistency,one(primary shard),all(all shard),quorum(default) 我們在傳送任何一個增刪改操作的時候,比如說put /index/type/id,都可以帶上一個consistency引數,指明我們想要的寫一致性是什
ElasticSearch最佳入門實踐(七十)優化寫入流程實現海量磁碟檔案合併(segment merge,optimize)
每秒一個segment file,檔案過多,而且每次search都要搜尋所有的segment,很耗時 預設會在後臺執行segment merge操作,在merge的時候,被標記為deleted的document也會被徹底物理刪除 每次merge
ElasticSearch最佳入門實踐(六十)建立、修改以及刪除索引
1、建立索引 建立索引的語法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ...
ElasticSearch最佳入門實踐(三十五)分頁搜尋以及deep paging效能問題深度揭祕
1、如何使用es進行分頁搜尋的語法 size,from GET /_search?size=10 GET /_search?size=10&from=0 GET /_search?size=10&from=20 假設將這6條資料分成3頁,每一頁是2
ElasticSearch最佳入門實踐(二十五)mget批量查詢api
1、批量查詢的好處 就是一條一條的查詢,比如說要查詢100條資料,那麼就要傳送100次網路請求,這個開銷還是很大的 如果進行批量查詢的話,查詢100條資料,就只要傳送1次網路請求,網路請求的效能開銷縮減100倍 2、mget的語法 可以說mget是很重要
ElasticSearch最佳入門實踐(六十五)基於scoll+bulk+索引別名實現零停機重建索引
1、重建索引 一個field的設定是不能被修改的,如果要修改一個Field,那麼應該重新按照新的mapping,建立一個index,然後將資料批量查詢出來,重新用bulk api寫入index中 批量查詢的時候,建議採用scroll api,並且採用多執行緒
ElasticSearch最佳入門實踐(四十二)什麼是mapping再次回爐透徹理解
(1)往es裡面直接插入資料,es會自動建立索引,同時建立type以及對應的mapping (2)mapping中就自動定義了每個field的資料型別 (3)不同的資料型別(比如說text和date),可能有的是exact value,有的是full text (4)exac
ElasticSearch最佳入門實踐(四十一)query string 的分詞以及 mapping 引入案例遺留問題的大揭祕
1、query string分詞 query string必須以和index建立時相同的analyzer進行分詞 query string對exact value和full text的區別對待 date:exact value _all:full text
ElasticSearch最佳入門實踐(三十九)倒排索引核心原理揭祕
1、例子,兩段文字 doc1:I really liked my small dogs, and I think my mom also liked them doc2:He never liked any dogs, so I hope that my m
ElasticSearch最佳入門實踐(三十八)精確匹配與全文搜尋的對比分析
1、ES中的兩種搜尋模式 1、exact value 2、full text 2、exact value 2017-01-01,exact value,搜尋的時候,必須輸入2017-01-01,才能搜尋出來。如果你輸入一個01,是搜尋不
ElasticSearch最佳入門實踐(三十七)用一個例子告訴你 mapping 到底是什麼
1、插入幾條資料 PUT /website/article/1 { "post_date": "2017-01-01", "title": "my first article", "content": "this is my first article in this w