1、准備數據
PUT /lib { "settings":{ "number_of_shards":3, "number_of_replicas":0 }, "mappings":{ "user":{ "properties":{ "name":{ "type":"text", "analyzer":"ik_max_word" }, "address":{ "type":"text", "analyzer":"ik_max_word" }, "age":{ "type":"integer" }, "interests":{ "type":"text", "analyzer":"ik_max_word" }, "birthday":{ "type":"date" } } } } }
PUT /lib/user/1 { "name":"趙六", "address":"黑龍江省鐵嶺", "age":50, "birthday":"1970-12-12", "interests":"喜歡喝酒,鍛煉,說相聲" } PUT /lib/user/2 { "name":"趙明", "address":"北京海淀區清河", "age":20, "birthday":"1998-10-12", "interests":"喜歡喝酒,鍛煉,唱歌" } PUT /lib/user/3 { "name":"lisi", "address":"北京海淀區清河", "age":23, "birthday":"1998-10-12", "interests":"喜歡喝酒,鍛煉,唱歌" } PUT /lib/user/4 { "name":"王五", "address":"北京海淀區清河", "age":26, "birthday":"1995-10-12", "interests":"喜歡編程,聽音樂,旅游" } PUT /lib/user/5 { "name":"張三", "address":"北京海淀區清河", "age":29, "birthday":"1988-10-12", "interests":"喜歡攝影,聽音樂,跳舞" }
2、操作演示
1)查詢出name中帶有趙字的,趙明和趙六的文檔
GET /lib/user/_search/ { "query":{ "term":{"name":"趙"} } }
GET /lib/user/_search/ { "query":{ "match":{"name":"趙"} } }
2)查詢出interests中含有喝酒或者唱歌的文檔
GET /lib/user/_search/ { "query":{ "terms":{ "interests":["喝酒","唱歌"] } } }
3)查詢出interests中含有喝酒或者唱歌的文檔,從下標為0開始,只查詢出兩個
GET /lib/user/_search/ { "from":0, "size":2, "query":{ "terms":{ "interests":["喝酒","唱歌"] } } }
4)查詢出interests中含有喝酒或者唱歌的文檔,並且 顯示版本號
GET /lib/user/_search/ { "version":true, "query":{ "terms":{ "interests":["喝酒","唱歌"] } } }
5)查詢出name含有趙或者含有六的文檔,會查詢出趙明和趙六,因為match會分詞。
GET /lib/user/_search/ { "query":{ "match":{ "name":"趙六" } } }
6)查詢出age是20的文檔,結果顯示趙明,數字型不分詞。
GET /lib/user/_search/ { "query":{ "match":{ "age":20 } } }
7)查詢出所有文檔
GET /lib/user/_search/ { "query":{ "match_all":{} } }
8)多字段查詢multi_match,字段name或者interests中含有唱歌的都會查詢出來
GET /lib/user/_search/ { "query":{ "multi_match":{ "query":"唱歌", "fields":["interests","name"] } } }
9)短語匹配查詢match_phrase,關鍵字作為一個短語,必須完全匹配,如下,必須含有“鍛煉,說相聲”這個短語才能查到
GET /lib/user/_search/ { "query":{ "match_phrase":{ "interests":"鍛煉,說相聲" } } }
10)指定返回的字段 _source,如下,返回的結果中只有 address和 name
GET /lib/user/_search/ { "_source":["address","name"], "query":{ "match":{ "interests":"唱歌" } } }
11)前綴匹配查詢 match_phrase_prefix,查詢name,以“趙”開頭
GET /lib/user/_search/ { "query":{ "match_phrase_prefix":{ "name":{"query":"趙"} } } }