07.full text query_string查詢
文章目錄
1. query string簡介
GET /_search
{
"query": {
"query_string" : {
"default_field" : "content",
"query" : "this AND that OR thus"
}
}
}
query_string查詢分析輸入內容並在運算子周圍拆分文字。每個文字部分彼此獨立地進行分析。例如以下查詢:
如果不指定default_field的話,則預設會在(當前index,如果制定了index的話)所有可以查詢的欄位中進行查詢
GET /_search
{
"query": {
"query_string" : {
"default_field" : "content",
"query" : "(new york city) OR (big apple)"
}
}
}
2. multi field 多欄位查詢
GET /_search
{
"query": {
"query_string" : {
"fields" : ["content", "name"],
"query" : "this AND that"
}
}
}
等價於
GET /_search
{
"query": {
"query_string": {
"query": "(content:this OR name:this) AND (content:that OR name:that)"
}
}
}
由於從單個搜尋項生成了多個查詢,因此使用dis_max帶有tie_breaker 的查詢自動組合它們。例如(name使用^5符號表示增強5 ):
GET /_search
{
"query": {
"query_string" : {
"fields" : ["content", "name^5"],
"query" : "this AND that OR thus",
"tie_breaker" : 0
}
}
}
簡單萬用字元也可用於搜尋文件的特定內部元素“內”。例如,如果我們有一個city包含多個欄位(或帶有欄位的內部物件)的物件,我們可以自動搜尋所有“城市”欄位:
GET /_search
{
"query": {
"query_string" : {
"fields" : ["city.*"],
"query" : "this AND that OR thus"
}
}
}
另一種選擇是在查詢字串本身中提供萬用字元欄位搜尋(正確轉義*符號),例如 city.*:something:
GET /_search
{
"query": {
"query_string" : {
"query" : "city.\\*:(this AND that OR thus)"
}
}
}
由於\(反斜槓)是json字串中的特殊字元,因此需要對其進行轉義,因此上面的兩個反斜槓query_string
3. query string 的語法
這個有點類似於高階語義了,在kibana的對應的框中能夠使用對應lucene語法,使用的就是query string的語法,也就是query_string對應的query字串還可以有一些語法來支援更加靈活的查詢。
1. 在query中查詢其他特定的欄位
查詢status field中包含 active的doc
status:active
查詢title中包含quick 或者 brown的doc
title:(quick OR brown)
查詢author欄位包括短語"john smith" 的doc
author:“John Smith”
如果field name中有空格的話要用反斜槓包裹
first\ name:Alice
比如 book.title, book.content or book.date 這些field 包含 quick 或者 brown (*號要使用反斜槓轉義):
book.*:(quick OR brown)
判斷field存在
exists:title
2. 萬用字元
萬用字元搜尋可以在單個term上執行,使用?替換單個字元,並*替換零個或多個字元:
qu?ck bro*
3. 正規表示式
正規表示式模式可以通過將它們包裝在forward-slashes("/")中嵌入查詢字串中:
name:/joh?n(ath[oa]n)/
4. 模糊匹配
quikc~ brwn~ foks~
quikc~1 編輯距離是1
5. 臨近匹配
proximity searches
"fox quick"~5
這個編輯距離和上面的模糊匹配的不一樣,模糊匹配的是針對單個term詞的字元級別的編輯距離,這裡的編輯距離是word級別的編輯距離。所以詞出現的順序也可以是不同的。
“quick fox” 會被認為比 “quick brown fox” 更相關。
5. range範圍
date在2012年內
date:[2012-01-01 TO 2012-12-31]
date在2012之前
date:{* TO 2012-01-01}
數字count在1-5中間
count:[1 TO 5]
數字count在10以上
count:[10 TO *]
不包括5
count:[1 TO 5}
還可以使用下面的語法
age:>10
age:>=10
age:<10
age:<=10
age:(>=10 AND <20)
age:(+>=10 +<20)
相關文章
- Rewrite %{QUERY_STRING}用法
- Sublime Text 查詢時排除指定的資料夾或檔案
- Text2Cypher:大語言模型驅動的圖查詢生成模型
- 根據sql_id 查詢歷史SQL TEXT :dba_hist_sqltextSQL
- 請問mysql裡面的text欄位怎麼進行模糊查詢MySql
- SQL查詢的:子查詢和多表查詢SQL
- 查詢之折半查詢
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- 複雜查詢—子查詢
- 查詢——二分查詢
- 子查詢-表子查詢
- 查詢(1)--靜態查詢
- 查詢(2)--動態查詢
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- 離線查詢與線上查詢
- 【SQL查詢】集合查詢之INTERSECTSQL
- 查詢與排序02,折半查詢排序
- ElasticSearch7.3學習(二十二)----Text欄位排序、Scroll分批查詢場景解析Elasticsearch排序
- 查詢
- #查詢演算法#【1】簡單查詢:順序、折半查詢演算法
- oracle 精確查詢和模糊查詢Oracle
- 查詢演算法__插值查詢演算法
- pgsql查詢優化之模糊查詢SQL優化
- MySQL - 資料查詢 - 簡單查詢MySql
- Elasticsearch複合查詢——boosting查詢Elasticsearch
- MySQL聯結查詢和子查詢MySql
- select查詢之三:子查詢
- select查詢之一:普通查詢
- [Mysql 查詢語句]——查詢欄位MySql
- Python查詢-二分查詢Python
- group by,having查詢 ”每**“的查詢
- B樹查詢,磁碟查詢資料
- PostgreSQL實時高效搜尋-全文檢索、模糊查詢、正則查詢、相似查詢、ADHOC查詢SQL
- 21億Q綁查詢21億Q綁查詢21億Q綁查詢21億Q綁查詢21億Q綁查詢
- [冷楓推薦]:資料庫操作,內外聯查詢,分組查詢,巢狀查詢,交叉查詢,多表查詢,語句小結。資料庫巢狀
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Hibernate通常是三種:hql查詢,QBC查詢和QBE查詢: