一、搜索請(qǐng)求的結(jié)構(gòu)
query——這是搜索請(qǐng)求中最重要的組成部分,它配置了基于評(píng)分返回的最佳文檔,也包括了你不希望返回哪些文檔
size——代表了返回文檔的數(shù)量
from——和size一起使用,from用于分頁(yè)操作
_source——指定_source字段如何返回
sort——默認(rèn)的排序是基于文檔的得分
二、介紹查詢和過(guò)濾器DSL

由于這個(gè)差異,過(guò)濾器可以比普通的查詢更快,而且可以被緩存。使用過(guò)濾器的搜索和使用查詢的普通搜索是非常相似的,但是需要將查詢替換為“filtered”映射,包含原始查詢和需要應(yīng)用的過(guò)濾器。
term查詢 讓你可以指定需要搜索的文檔字段和詞條
terms查詢 可以搜索某個(gè)文檔字段中的多個(gè)詞條
match查詢 和term查詢類似,match查詢是一個(gè)散列映射,包含了希望搜索的字段和字符串
? ? 布爾查詢行為 默認(rèn)情況下match查詢使用布爾行為和OR操作符,可以修改為AND
? ? 詞組查詢行為?
三、組合查詢或復(fù)合查詢
bool查詢
? ? bool查詢?cè)试S你在單獨(dú)的查詢中組合任意數(shù)量的查詢,指定的查詢子句表明哪些部分是必須(must)匹配、應(yīng)該(should)匹配或者不能(must_not)匹配上Elasticsearch索引里的數(shù)據(jù)
? ? 1.如果指定bool查詢的某部分是must匹配,只有匹配上這些查詢的結(jié)果才會(huì)被返回
? ? 2.如果指定了pool查詢的某部分是should匹配,只有匹配上指定數(shù)量子句的文檔才會(huì)被返回
? ? 3.如果沒(méi)有指定must匹配的子句,文檔至少要匹配一個(gè)should子句才能被返回
? ? 4.最后,must_not子句會(huì)使得匹配其的文檔被移出結(jié)果集合
must是為了組合多個(gè)子句,使用二元操作and(query1 AND query2 AND query3)
should是使用二元操作or組合多個(gè)子句(query1 OR query2 OR query3)
四、超越match和過(guò)濾器查詢
gt 搜索大于某值的字段,不包括該值本身
gte 搜索大于某值的字段,包括該值本身
lt 搜索小于某值的字段,不包括該值本身
lte 搜索小于某值的字段,包括該值本身
prefix查詢?
????prefix查詢和過(guò)濾器允許你根據(jù)給定的前綴來(lái)搜索詞條
wildcard查詢
? ? *通配符匹配任何數(shù)量的字符(也可以不含)或者是?通配符匹配單個(gè)字符
五、使用過(guò)濾器查詢字段的存在性
exists過(guò)濾器
missing過(guò)濾器
將任何查詢轉(zhuǎn)變?yōu)檫^(guò)濾器