Elasticsearch輕量查詢
Elasticsearch有兩種查詢方式:
- URI帶有查詢條件(輕量查詢)
- 請求體中帶有查詢條件(復(fù)雜查詢)
第一種方式查詢能力有限勋乾,不是所有的查詢都可以使用此方式。而第二種方式將查詢條件以JSON格式表現(xiàn)乏悄,并作為查詢請求的請求體,此方法查詢條件更具表現(xiàn)力昧狮,建議復(fù)雜的查詢使用第二種方式孽查。
輕量查詢
GET twitter/_search?q=user:kimchy
參數(shù)名 | 參數(shù)值描述 |
---|---|
q | 查詢字符串 |
df | 查詢字符串中未指定字段時所使用的默認(rèn)字段 |
analyzer | 用于查詢字符串的分析器 |
analyze_wildcard | 是否分析通配符查詢或前綴查詢瞬痘,默認(rèn)為否 |
default_operator | 默認(rèn)操作酥馍,AND或OR辩昆,默認(rèn)為OR |
lenient | 格式轉(zhuǎn)換錯誤是否被忽略,默認(rèn)時否 |
_source | 設(shè)置為false時旨袒,查詢結(jié)果不包含_source字段 |
stored_fields | 查詢結(jié)果包含的字段汁针,使用逗號分隔 |
sort | fieldName:asc/fieldName:desc根據(jù)指定字段進(jìn)行排序,可以存在多個sort(順序很重要) |
track_scores | 查詢結(jié)果中是否包含score數(shù)據(jù) |
track_total_hits | 查詢結(jié)果中是否包含total數(shù)據(jù) |
timeout | 查詢超時時間 |
terminate_after | 每個分片收集文檔的上限值砚尽,當(dāng)文檔超過上限時會終止查詢施无。并在查詢結(jié)果中terminated_early表示是否超過上限 |
from | hit中第一個文檔的起始位置 |
size | hit中文檔的數(shù)量 |
search_type | 查詢類型,可以是dfs_query_then_fetch或query_then_fetch必孤。默認(rèn)為query_then_fetch |
查詢字符串詳解
查詢字符串被解析為一系列詞項和操作符猾骡,即q的參數(shù)值
查詢字符串格式如下:
- 根據(jù)status字段中的內(nèi)容進(jìn)行查詢,返回字段中包含active的文檔敷搪。
GET twitter/_search?q=status:active
- 根據(jù)title字段中的內(nèi)容進(jìn)行查詢兴想,返回字段中包含quick或brown的文檔。默認(rèn)操作符為OR
GET twitter/_search?q=title:(quick OR brown)
GET twitter/_search?q=title:(quick brown)
- 根據(jù)author字段中的內(nèi)容進(jìn)行查詢购啄,返回字段中包含John Smith短語的文檔襟企。
GET twitter/_search?q=author:"John Smith"
- 根據(jù)book.title嘱么、book.content等字段中的內(nèi)容進(jìn)行查詢狮含,返回字段中包含quick或brown的文檔顽悼。
GET twitter/_search?q=book.\*:(quick brown)
- 根據(jù)title字段中的內(nèi)容進(jìn)行查詢,返回字段不未空的文檔几迄。
GET twitter/_search?q=_exists_:title
- 根據(jù)title字段中的內(nèi)容進(jìn)行查詢蔚龙,返回字段中包含以a開頭或以b開頭的文檔。通配符*標(biāo)識匹配0個或多個字符映胁,通配符?標(biāo)識1個字符木羹。
通配符會影響查詢效率,會消耗過多的內(nèi)存解孙。以通配符開頭的查詢坑填,會匹配索引中所有的文檔,不建議使用弛姜。
GET twitter/_search?q=title:(a* b?)
- 根據(jù)name字段中的內(nèi)容進(jìn)行查詢脐瑰,返回字段中匹配//中正則表達(dá)式的文檔。
GET twitter/_search?q=name:/joh?n(ath[oa]n)/
- 根據(jù)name字段中的內(nèi)容進(jìn)行查詢廷臼,返回字段中模糊匹配quikc的文檔苍在。模糊匹配的字符最多有2處與quikc不同,包括多字符荠商、少字符寂恬、錯位。
GET twitter/_search?q=name:quikc~
- 根據(jù)count字段中的內(nèi)容進(jìn)行查詢莱没,返回字段中大于等于1并小于5的文檔初肉。
GET twitter/_search?q=count:[1 TO 5}
GET twitter/_search?q=count:(+>=1 +<5)
- 根據(jù)title字段中的內(nèi)容進(jìn)行查詢,返回字段中包含quick或fox的文檔饰躲。quick文檔相關(guān)性更高
GET twitter/_search?q=title:(quick^2 fox)
- 根據(jù)title字段中的內(nèi)容進(jìn)行查詢朴译,返回字段中一定包含fox并不包含news的文檔。quick brown可有可無属铁,如果存在評分會更高眠寿。
GET twitter/_search?q=title:(quick brown +fox -news)