(ElasticSearch)使用Postman工具進行Restful接口訪問


ElasticSearch的接口語法

curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'

 

 

1.創建索引index同時映射mapping

請求地址,創建一個名為myindex1的索引庫

http://192.168.118.3:9200/myindex1

請求的JSON

{ 
    "mappings":
    {
        "type1":
        { 
            "properties":
            { 
                "id": 
                { 
                    "type": "long",
                    "store": true, 
                    "index": false
                },
                "title":
                {
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"standard" 
                    
                },
                "content": { 
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"standard" 
                }
            }
        }
    }
}              
  • type:存儲的類型
  • store:代表是否保存,取值類型為boolean
  • index:代表是否進行進行分析(分詞),我用的是6.2.4版本的es,其他版本可能有差異取值為"not_analyzed"或"analyzed",
  • analyzer:代表使用的分析器的類型,之后才用中文分詞的時候修改此處

 

 

elasticsearch-head查看(我這里使用的集群,默認分成5片,復制一份)

 

 

 

 查看索引信息

 

 

 2.先創建索引然后在設置Mapping(修改)

這種情況也可以當作修改索引庫

ElasticSearch是基於Lucene開發的,他的修改的原理也是一樣,先刪除在添加

只發送請求,不帶json請求體

http://192.168.118.3:9200/myindex2

 

 

 

 設置mapping的請求,換成POST方式請求

http://192.168.118.3:9200/myindex2/type1/_mapping

請求體中的json串

 {
        "type1":
        { 
            "properties":
            { 
                "id": 
                { 
                    "type": "long",
                    "store": true, 
                    "index": false
                },
                "title":
                {
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"standard" 
                    
                },
                "content": { 
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"standard" 
                }
            }
        }
    }

 

請求注意要點(下圖)

 

 

 3.刪除索引

刪除索引比較簡單,把請求方式更改為DELETE

 

 

 4.創建文檔document

POST請求

http://192.168.118.3:9200/myindex1/type1/1

json文檔內容

{ 
    "id":1,
    "title":"ElasticSearch是一個基於Lucene的搜索服務器",
    "content":"它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java 開發的,並作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時 搜索,穩定,可靠,快速,安裝使用方便。" 
}

響應結果

 

 

 使用elasticSearch-head查看文檔

 

 

 使用相同的id再次添加視為修改,會覆蓋之前的文檔

5.刪除文檔

刪除和創建文檔的請求一樣,只不過不需要json串,只是把請求方式由post更改為DELETE

http://192.168.118.3:9200/myindex1/type1/1

6.根據id查詢文檔

根據id查詢文檔請求和添加刪除一樣,把請求方式更改為GET即可

 

 

 7.使用querystring查詢文檔

POST請求

http://192.168.118.3:9200/myindex1/type1/_search

請求json

{
    "query":
    {
        "query_string": 
        { 
            "default_field": "title",
            "query": "搜索服務器" 
        } 
    }
}
default_field:要搜索的域
query:搜索條件

 

 

 響應結果

 

 

 將查詢關鍵字變為"亞索",還是可以查到,應為包含了"索"字,這是應為底層的分析器的原因

8.使用term查詢

將上次發生的json更改為term方式

{ 
    "query":
    { 
        "term": 
        { 
            "title": "搜索"
            }
    }
}

 

 

 在使用默認的分析器,會把漢字拆分成一個一個的,搜索詞語是查詢不出來結果的

IK分詞器

測試默認的分詞器

發生POST請求

http://192.168.118.3:9200/_analyze

JSON

{
    "analyzer":"standard",
    "text":"中華人民共和國"
}

分詞結果

 

 這樣分詞效果對於中文文檔來說,是我們不能接受的,我們需要使用專門針對於漢字詞語進行分詞的分詞器

我們需要配置IK分詞到Elasticsearch中,將ik分詞器的包解壓到plugins目錄下並重新啟動ES就好了

IK 提供了兩個分詞算法 ik_smart ik_max_word
其中 ik_smart 為最少切分, ik_max_word 為最細粒度划分
先來測試一下 ik_smart最少切分
 請求路徑不變更改json
{
    "analyzer":"ik_smart",
    "text":"中華人民共和國"
}

分詞結果

 

 再測試一下,ik_max_word最細粒度划分

{
    "analyzer":"ik_max_word",
    "text":"中華人民共和國"
}

分詞結果

 

 接下來使用ik分詞器重建索引庫,先將之前的索引庫刪除

 {
        "type1":
        { 
            "properties":
            { 
                "id": 
                { 
                    "type": "long",
                    "store": true, 
                    "index": false
                },
                "title":
                {
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"ik_max_word" 
                    
                },
                "content": { 
                    "type": "text",
                    "store": true, 
                    "index": true,
                    "analyzer":"ik_max_word" 
                }
            }
        }
    }

然后再添加文檔

 

 

之后再次執行之前的查找文檔

再次搜索"亞索"

 

 返回結果為空,

 

 再執行之前的trem查詢

 

 可以看到正常搜索出來了

 

 

索引庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM