es query DSL學習總結

2022-06-06 17:03:12 字數 1837 閱讀 3802

es的檢索分為query和filter

query關心的score,即查詢結果與檢索條件的相關度

filter關心yes or no,關心是匹配的是與否,因此不會參與score相關的計算

圖中的左側是filter的主要特性,右側是query相關的主要查詢,比較高階的檢索目前掌握不熟練,用的也少,沒有列出

按照層次分為符合查詢(compound query),全文檢索(full text query),葉子查詢(term-level query),可以簡單記為字段查詢或詞元查詢

其中全文檢索主要體現在分詞上,因此需要掌握上乙個篇章的analysis模組中的 _analyze介面分析分詞的結果

1、檢查字段型別,檢視欄位是 analyzed, not_analyzed

2、分析查詢字串,如果只有乙個單詞項, match 查詢在執行時就會是單個底層的 term 查詢

3、查詢匹配的文件,會在倒排索引中查詢匹配文件,然後獲取一組包含該項的文件

4、為每個文件評分

1、 resthighlevelclient-------注入乙個client

2、 searchrequest       -------構建乙個request

3、 searchsourcebuilder   --構建乙個sourcebuilder

4、 aggregationbuilder和querybuilder----構建乙個檢索或聚合的builder

一般查詢:=、>、>=、

1、連線符 or(should) and(must)

and:    boolquerybuilder.must(querybuilders.termquery("isdel",1));

or:       boolquerybuilder.should(querybuilders.termquery("casestatus",s));

2、比較查詢

=:querybuilders.termquery("isdel",1));

範圍:querybuilders.rangequery("overduestarttime").lte(startdate.gettime())

<=      lte

>=     gte

>       gt

3、in查詢------termsquery

querybuilders.termsquery("id",idlist)

4、like查詢------wildcardquery,matchphrasequery,matchquery

querybuilders.wildcardquery("phone", "*" + phonenumber+ "*")

querybuilders.matchphrasequery("name", name)

5、orderby 和limit

searchresponse searchresponse = client.preparesearch(index)

.settypes(type)

.setquery(boolquerybuilder)

//指定查詢字段

.addstoredfield("id")

.addsort(order, sortorder)

.setfrom((currentpage - 1) * limit).setsize(limit)

.execute()

.actionget();

學習後總結,總結後再學習

學習後總結,總結後再學習 2010年畢業以來,讀了幾百本書籍,包括it技術 管理 歷史 營銷 金融 心理等等,在讀某商學院mba一年後感覺有些東西還是要寫寫,除了能增加自己對某些知識和理論的理解外,也許其他人也碰巧想關注一下,了解這方面的東西。我所寫的都是一些簡單的概念層面的解釋,不會做太深入的闡述...

學習總結 近期acm學習的總結

開學已經乙個月了,對acm的學習也乙個月了,做了一下總結 對自己不好的地方的反省 1.開學一開始學的是stl,不得不說stl是乙個很好的東西,熟練的運用stl大大的減少了 量,也使演算法容易實現。但是我在用stl後使自己產生了一種惰性思維。在兩個星期的stl練習後,我發現自己變得越來越懶,不願意自己...

深度學習學習總結

北京大學人工智慧實踐 tensorflow2.0 學習1 6章 複習1 4章 第4章需要寫乙個部落格 寫4,5,6章 吳恩達深度學習第四步 卷積神經網路 學習1 2周 複習1 2周 殘差網路和inception網路不太懂,目前用不到 三四周是目標定位,人臉識別,神經風格轉換目前用不到 油管最新最熱t...