elasticsearch 口水篇(2)CRUD Sense


Sense

為了方便、直觀的使用es的REST Api,我們可以使用sense。Sense是Chrome瀏覽器的一個插件,使用簡單。

如圖:

Sense安裝:

https://chrome.google.com/webstore/detail/sense/doinijnbnggojdlcjifpdckfokbbfpbo

或者直接去chrome網上應用店搜索安裝。

 


 

 

CRUD

URL的格式:

http://localhost:9200/<index>/<type>/[<id>]

其中index、type是必須提供的。

id是可選的,不提供es會自動生成。

index、type將信息進行分層,利於管理。index可以理解為數據庫,type理解為數據表。

補一張圖(0211) 

The type called another_type and the index called another is shown in order to emphasize that Elasticsearch is multi-tenant, by which we mean that a single server can store multiple indexes and multiple types.

上面解釋了“多租戶”! 

 

索引文檔(Create、update)

首先我們塞入一條數據,命令如下:

curl -XPUT "http://localhost:9200/movies/movie/1" -d'
{
    "title": "The Godfather",
    "director": "Francis Ford Coppola",
    "year": 1972
}'

-d代表一個json格式的對象,這里是一部電影數據。

運行結果如下:

通過默認查詢我們可以查詢到剛才添加的數據,如下:

下面我們來修改這條數據,添加電影的類型,如下:

curl -XPUT "http://localhost:9200/movies/movie/1" -d'
{
    "title": "The Godfather",
    "director": "Francis Ford Coppola",
    "year": 1972,
    "genres": ["Crime", "Drama"]
}'

再查詢可以發現該數據多了一個字段:genres。

 

通過id進行查詢(getting by id)

curl -XGET "http://localhost:9200/movies/movie/1" -d''

 

刪除文檔(deleting document)

curl -XDELETE "http://localhost:9200/movies/movie/1" -d''

再通過getting by id,返回:

 

 

檢索(search)

為了檢索我們先多添加幾篇文檔:

curl -XPUT "http://localhost:9200/movies/movie/1" -d'
{
    "title": "The Godfather",
    "director": "Francis Ford Coppola",
    "year": 1972,
    "genres": ["Crime", "Drama"]
}'

curl -XPUT "http://localhost:9200/movies/movie/2" -d'
{
    "title": "Lawrence of Arabia",
    "director": "David Lean",
    "year": 1962,
    "genres": ["Adventure", "Biography", "Drama"]
}'

curl -XPUT "http://localhost:9200/movies/movie/3" -d'
{
    "title": "To Kill a Mockingbird",
    "director": "Robert Mulligan",
    "year": 1962,
    "genres": ["Crime", "Drama", "Mystery"]
}'

curl -XPUT "http://localhost:9200/movies/movie/4" -d'
{
    "title": "Apocalypse Now",
    "director": "Francis Ford Coppola",
    "year": 1979,
    "genres": ["Drama", "War"]
}'

curl -XPUT "http://localhost:9200/movies/movie/5" -d'
{
    "title": "Kill Bill: Vol. 1",
    "director": "Quentin Tarantino",
    "year": 2003,
    "genres": ["Action", "Crime", "Thriller"]
}'

curl -XPUT "http://localhost:9200/movies/movie/6" -d'
{
    "title": "The Assassination of Jesse James by the Coward Robert Ford",
    "director": "Andrew Dominik",
    "year": 2007,
    "genres": ["Biography", "Crime", "Drama"]
}'

  

最好再參考下:ElasticSearch's query DSL

{
    "query": {
        //Query DSL here
    }
}

  

--基本的文本檢索

curl -XPOST "http://localhost:9200/_search" -d'
{
    "query": {
        "query_string": {
            "query": "kill"
        }
    }
}'

  

--指定字段進行檢索

curl -XPOST "http://localhost:9200/_search" -d'
{
    "query": {
        "query_string": {
            "query": "ford",
            "fields": ["title"]
        }
    }
}'

fields默認為"_all" 。

 

--過濾(filtering)

curl -XPOST "http://localhost:9200/_search" -d'
{
    "query": {
        "filtered": {
            "query": {
                "query_string": {
                    "query": "drama"
                }
            },
            "filter": {
                "term": { "year": 1962 }
            }
        }
    }
}'

  

詳細api,參考:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html

 

部分內容摘抄自:

http://joelabrahamsson.com/elasticsearch-101/

 

 


 

query VS filter

摘錄一張有意思的ppt。

 

 

 

 


免責聲明!

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



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