一、幾個概念
1、Index Type Document
一般我們初學時會把這些與數據庫進行對照方便理解
- Index->Database
- Type->Table (最新版本已經不使用Type了,所以很多人會奇怪為什么去掉了?ES並非和數據庫是相同的,所以不要完全按數據庫的方式來看ES)
- Document->Row
2、倒排索引
參考此文:(一般我們從目錄找到相應的文章為正向索引,如果從關鍵詞索引找到對應的文章即倒排索引)
二、幾種Java調用ES方式
- Rest API Test
- Using Spring Data Repositories
- Using the RestClient
- Using Transport Client
三、Rest API Test
參考官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index.html
#1、創建索引及document #e.g. PUT /index名/_doc/document id #最新版本已經沒有type,且這里固定為_doc PUT /index-test/_doc/1 { "id":"1", "name": "hello world", "code":11 } #2、更新document(有兩種方式:方式一與創建索引一致就會更新;方式二改成POST) #e.g. POST /index名/_doc/document id POST /index-test/_doc/1 { "id":"1", "name": "hello world", "code":12 } #3、查詢 #e.g. GET /index名/_search #可以查詢出所以索引及數據 #其中_score為匹配度 GET /index-test/_search { "query": { "match_all": {} } } #4、模糊查詢 關鍵詞 match match_phrase match_phrase_prefix #match 包含模糊匹配、單詞匹配、短語匹配 #e.g. 查詢“hello w”有結果 w不是一個完全的單詞或短語 #match_phrase 包含單詞匹配、短語匹配 #e.g. 查詢“hello w”無結果 #match_phrase_prefix 包含單詞匹配、短語匹配,同時增加在集合內通配符匹配 #e.g. 查詢“hello w”有結果 #match match_phrase_prefix 區別在於 hello wadasas match有結果, #match_phrase_prefix無結果 GET /index-test/_search { "query": { "match": { "name": "hello wa" } } } #5、精確查詢(精確是指精確到單詞) GET /index-test/_search { "query": { "term": { "name": "hello" } } } #6、精確查詢,且使用多個單詞(精確是指精確到單詞) GET /index-test/_search { "query": { "terms": { "name": ["hello","world"] } } } #7、增加中文分詞ik #支持2種分詞模式ik_smart ik_max_word #測試分詞效果 _analyze GET /index-test/_analyze { "analyzer": "ik_max_word", "text": "你世界好" } #8、排序與分頁 GET /bank/_search { "query": { "match_all": {} }, "sort": [ { "age": "asc" } ], "from": 1, "size": 1 } #9、詞頻統計 DELETE message_index #創建索引數據結構 PUT message_index { "mappings": { "properties":{ "message": { "analyzer": "ik_smart", "type": "text", "fielddata":"true" } } } } #增加doc1 PUT /message_index/_doc/1 { "message":"最新版本已經不使用Type了,所以很多人會奇怪為什么去掉了" } #增加doc2 PUT /message_index/_doc/2 { "message":"ES並非和數據庫是相同的,所以不要完全按數據庫的方式來看ES" } #aggs為Aggregations(聚合)縮寫 #size 10 為前10的統計結果 #默認熱點降序出結果 POST /message_index/_search { "size" : 0, "aggs" : { "messages" : { "terms" : { "size" : 10, "field" : "message" } } } }
最新Java Elasticsearch 7.10教程(匯總)
玄明Hanko:最新Java Elasticsearch 7.10教程(匯總)