ElasticSearch URI 查詢

公號:碼農充電站pro
主頁:https://codeshellme.github.iohtml

1,URI 查詢格式

URI 查詢的通常格式以下:git

GET /index_name/_search?q=key:val&df=title&sort=year:desc&from=0&size=10
{
	"profile":"true"
}

其中的參數表明的含義以下:github

  • q:用於指定查詢語句,它能夠是一個鍵值對,也能夠只有一個 val
    • key 表示在哪一個字段中查詢。
    • val 表示查詢的內容。
  • df:查詢中未定義字段前綴時使用的默認字段。若是不指定,默認會對全部字段進行查詢。
  • sort:指定排序規則。
  • from:與 size 一塊兒用於分頁。
  • profile:用於查看查詢執行的詳細過程,可參考這裏
  • 更多的 URI 參數可參考這裏

2,範查詢

若是查詢時沒有指定字段,就會在全部的字段中查詢,這叫作範查詢。例如 q=2012正則表達式

3,Term:單詞查詢

Term 查詢不須要用引號引住。好比 q=A B 表示包含 ABshell

4,Phrase:詞組查詢

Phrase 查詢須要用引號引住。elasticsearch

好比 q="A B",表示包含 "A B",而且要求順序一致,實際上此時 "A B" 會被認爲是一個單詞ide

5,查詢分組

好比 q=title:A B,表示的是 title:AB,會在 title 字段中查詢 A,在全部的字段中查詢 Bui

q=title:(A B),只會在 title 中查詢 AB(A B) 用括號括住,表示一個分組。搜索引擎

6,布爾查詢

在使用 {"profile":"true"} 查看執行過程時,會有兩個概念 mustmust_not編碼

  • must:表示必須存在,用 + 表示。
  • must not:表示必須不存在,用 - 表示。

布爾查詢包含下面三種:

  • AND:且,好比 q=title:(A AND B),表示 +title:A +title:B,表示必須包含 A,也必須包含 B
  • OR:或,好比 q=title:(A OR B),等同於 q=title:(A B),表示 title:A title:B,表示 title 中包含 A 或包含 B
  • NOT:非,好比 q=title:(A NOT B),表示 title:A -title:B,表示包含 A,但不能包含 B

也能夠在查詢中直接使用 +-+%2B (URL 編碼)表示,好比:

  • q=title:(%2BA -B),表示必須包含 A,不能包含 B。
  • q=title:(-A -B),表示不能包含 A,也不能包含 B。
  • q=title:(-A %2BB),表示不能包含 A,但必須包含 B。
  • q=title:(A %2BB),其實等價於 q=title:(%2BB),表示必須包含 B,A 無所謂。

7,範圍查詢

用於數字類型:

  • [] 表示閉區間
  • {} 表示開區間

使用的時候用括號括住,好比:

  • year:({2000 TO 2020]),表示 2000 < year <= 2020
  • year:([* TO 2018]),表示 year <= 2018
  • year:({2016 TO *}),表示 year > 2016

8,通配符與正則查詢

在通配符查詢中:

  • ? 表明 1 個字符
  • * 表明 0 或多個字符

通常通配符查詢效率較低,佔內存大,因此不建議使用,特別是放在最前面。

通配符查詢示例:

  • title:mi?d
  • title:be*

正則表達式查詢示例:

  • title:[bt]oy

9,模糊匹配與近似查詢

示例:

  • title:beautifl~1
  • title:"Lord Rings"~2

(本節完。)


推薦閱讀:

ElasticSearch 查詢

ElasticSearch 文檔及操做

ElasticSearch 分詞器

ElasticSearch 搜索引擎概念簡介

Kibana,Logstash 和 Cerebro 的安裝運行


歡迎關注做者公衆號,獲取更多技術乾貨。

碼農充電站pro

相關文章
相關標籤/搜索