ElasticSearch 基礎入門 and 操作索引 and 操作文件
阿新 • • 發佈:2020-07-30
基本概念
索引:
類似於MySQL的表。索引的結構為全文搜尋作準備,不儲存原始的資料。
索引可以做分散式。每一個索引有一個或者多個分片 shard。每一個分片可以有多個副本 replica。
文件:
類似與MySQL的一行記錄。
對映:
所有文件寫入索引之前,會進行分析, 分析將輸入的文字進行分割為詞條,分析哪些詞條會被過濾。
文件型別:
每個文件都可以有不同的結構。
不同的文件類不能為相同的屬性設定不同的型別。
【同一索引中所有文件型別中,一個title欄位必須是相同的型別】
RestFul API 操作索引
1 建立索引
PUT:127.0.0.1:9200/test { "settings": { "index": { "number_of_shards": "2", "number_of_replicas": "0" } } }
2 刪除索引
DELETE:127.0.0.1:9200/test
RestFul API 操作文件
1、新增資料
POST:/{索引}/{型別}/{id 非必需} # 指定資料的唯一標示符 POST:127.0.0.1:9200/test/user/1001 { "id": 1010, "name": "張三", "age": 10, "sex": "男" } # 不指定資料的唯一標示符 POST:127.0.0.1:9200/test/user { "id": 1011, "name": "張三", "age": 11, "sex": "男" }
2、刪除資料
DELETE:127.0.0.1:9200/test/user/1001
說明:
刪除一個文件的時候不會立即從磁碟上移除,它只是被標記為已刪除。
Elasticsearch 將會在以後新增更多索引的時候才會在後臺進行刪除內容的清理。
3、更新資料
在 Elasticsearch中,文件資料是不能被修改的,但是可以通過指定唯一標示符的方式進行覆蓋更新【全量覆蓋】 PUT:127.0.0.1:9200/test/user/1001 { "id": 1010, "name": "張三", "age": 11, "sex": "男" } 【區域性更新】 1、從舊文件中檢索到JSON 2、修改 3、刪除舊文件 4、索引新文件 POST:127.0.0.1:9200/test/user/1001/_update { "doc":{ "age": 100 } }
4、查詢資料
根據ID搜尋資料【GET】127.0.0.1:9200/test/user/1001
獲取所有資料預設10條【GET】127.0.0.1:9200/test/user/_search
根據關鍵詞搜尋資料【GET】127.0.0.1:9200/test/user/_search?q=age:100
5、DSL搜尋
Elasticsearch提供的豐富的靈活的查詢語言叫做DSL查詢【Query DSL】
POST:127.0.0.1:9200/test/user/_search
{
"query": {
"match": {
"age": 20
}
}
}
filter 過濾
must 匹配
6、全文檢索
POST:127.0.0.1:9200/test/user/_search
{
"query": {
"match": {
"name": "三 五"
}
}
}
7、高亮顯示
POST:127.0.0.1:9200/test/user/_search
{
"query": {
"match": {
"name": "三 五"
}
},
"highlight": {
"fields": {
"name": {}
}
}
}
8、聚合操作,類似SQL中的 group by 操作
POST:127.0.0.1:9200/test/user/_search
{
"aggs": {
"all_interests": {
"terms": {
"field": "age"
}
}
}
}