1.term結構化字段查詢,匹配一個值,且輸入的值不會被分詞器分詞。
比如查詢條件是:
{ "query":{ "term":{ "foo": "hello world" } } }
那么只有在字段中存儲了“hello world”的數據才會被返回,如果在存儲時,使用了分詞,原有的文本“I say hello world”會被分詞進行存儲,不會存在“hello world”這整個詞,那么不會返回任何值。
但是如果使用“hello”作為查詢條件,則只要數據中包含“hello”的數據都會被返回,分詞對這個查詢影響較大。
2.match_phase習語匹配,查詢確切的phase,在對查詢字段定義了分詞器的情況下,會使用分詞器對輸入進行分詞,然后返回滿足下述兩個條件的document:
1.match_phase中的所有term都出現在待查詢字段之中
2.待查詢字段之中的所有term都必須和match_phase具有相同的順序
{ "foo":"I just said hello world" } { "foo":"Hello world" } { "foo":"World Hello" }
使用match_phase:
{ "query": { "match_phrase": { "foo": "Hello World" } } }
會返回前兩條文檔。
3.match模糊匹配,先對輸入進行分詞,對分詞后的結果進行查詢,文檔只要包含match查詢條件的一部分就會被返回。
4.query_string語法查詢,同match_phase的相同點在於,輸入的查詢條件會被分詞,但是不同之處在與文檔中的數據可以不用和query_string中的查詢條件有相同的順序。