[Index and Query a Document]

이제 customer index 무엇인가를 집어 넣어 보자. 앞의 내용에 대한 기억을 되살려보면, document index하기 위하여 elasticsearch index 어느 Type인지를 알려주어야 한다.


Customer index "external" type 다음과 같은 간단한 customer document index 보자.


JSON Document {"name":"John Doe"}이다.


curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
  "name": "John Doe"
}'


응답 결과는 다음과 같다.


curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
  "name": "John Doe"
}'

{
 
"_index" : "customer",
 
"_type" : "external",
 
"_id" : "1",
 
"_version" : 1,
 
"created" : true
}


위에서 살펴보면, 새로운 customer document customer index내에 성공적으로 생성되었음을 있다. 생성된 document 내부적으로 특정 index time 1이라는 ID를 갖는다. Elasticsearch document index하기 전에 명시적으로 customer index 먼저 생성하도록 요구하지 않는다는 것에 주목하라. 이전 예제에서 살펴보면, elasticsearch 이전에 customer index 존재하지 않으면 자동으로 customer index 생성한다. 이제 index document 조회해 보자.


curl -XGET 'localhost:9200/customer/external/1?pretty'


응답 결과는 다음과 같다.


curl -XGET 'localhost:9200/customer/external/1?pretty'
{
 
"_index" : "customer",
 
"_type" : "external",
 
"_id" : "1",
 
"_version" : 1,
 
"found" : true, "_source" : { "name": "John Doe" }
}


found 필드 외에는 모두 일반적으로 나타나는 필드이다. 이전 단계에서 index JSON document _source 필드에 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/692

[Create an Index]

, 이제 "customer"라는 이름을 가지는 index 생성해 보자. 그리고 , 다시 모든 index list 조회해 보자.


curl -XPUT 'localhost:9200/customer?pretty'
curl
'localhost:9200/_cat/indices?v'


번째 command http PUT method "customer"라는 이름을 갖는 index 생성한다. 간단히 pretty 끝에 호출하여 JSON 응답을 출력할 있다.

응답 결과는 다음과 같다.


curl -XPUT 'localhost:9200/customer?pretty'
{
 
"acknowledged" : true
}

curl 'localhost:9200/_cat/indices?v'
health index    pri rep docs
.count docs.deleted store.size pri.store.size
yellow customer  
5   1          0            0       495b           495b


번째 command 응답 결과를 통해서 customer 이름의 index 1개가 있고, 5개의 primary shard 1개의 replica 있음을 있다. 아직 document 없다.


Customer index yellow health tag되어 있음을 있다. 이전에 논의했던 내용을 되새겨 보면, yellow 아직 replica 할당되어 있지 않았음을 의미함을 있다. 이유는 elasticsearch에서 index 대해 하나의 replica default 생성했기 때문이다. 순간, 하나의 node만을 가지고 있기 때문에 다른 node cluster join 때까지 replica 할당되지 않는다. Replica second node 할당되면 health status green으로 바뀐다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/691

[List All Indexes]

이제 index 대해서 가만히 들여다 보자.


curl 'localhost:9200/_cat/indices?v'


응답은 다음과 같다.


curl 'localhost:9200/_cat/indices?v'
health index pri rep docs
.count docs.deleted store.size pri.store.size


아직 cluster index 하나도 없다는 것을 의미한다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/690

[Cluster Health]

기본적인 cluster health check부터 시작해 보자. 이를 통해 우리는 cluster 어떻게 작업을 수행하고 있는지 있다. Curl 사용하여 health check하겠지만, HTTP/REST call 수행할 있는 어떤 tool 사용해도 된다. Elasticsearch 실행한 node 있다고 가정하고, 다른 command shell window open하자.

Cluster health check하기 위해서, _cat API 사용할 것이다. 이전에 node endpoint 주소를 기억해보면 9200 포트를 사용했다.


curl 'localhost:9200/_cat/health?v'



응답 결과는 다음과 같다.


epoch      timestamp cluster       status node.total node.data shards pri relo init unassign
1394735289 14:28:09  elasticsearch green           1         1      0   0    0    0        0


Cluster name elasticsearch임을 있다. 현재 cluser 상태는 green status이다.

Cluster health 대해 언제든지 질의하면, green/yellow/red 한가지 상태를 있다. Green 모든 것이 좋은 상태 (cluster 모든 기능을 정상적으로 수행)임을 의미하고, yellow 모든 data 이용할 수는 있지만, 몇몇 replicas 아직 할당되지 않은 상태(cluster 모든 기능을 정상적으로 수행)임을 의미하고, red 몇몇 데이터를 이용할 없는 상태임을 의미한다. Cluster red 상태일지라도 부분적으로 동작한다. (이용 가능한 shard 있는 데이터에 대한 검색 요청을 지속적으로 수행) 하지만, 유실한 데이터가 있기 때문에 ASAP(As Soon As Possible) 문제 상황을 fix해야 한다.


위의 응답 결과로부터 우리는 전체 1개의 node 있고, 0개의 shard 있음을 있다. 왜냐하면 아직 데이터가 없기 때문이다. Default cluster name (elasticsearch) 사용했고, 다른 node discover하기 위해서 elasticsearch multicase 사용하므로 네트워크 상에서 하나 이상의 node 우연하게 실행하면 모두 cluster join하게 된다. 시나리오에서는 응답 결과로 1 이상의 node 있을 것이다.


다음과 같이 cluster 있는 node list 있다.


curl 'localhost:9200/_cat/nodes?v'


응답은 다음과 같다.


curl 'localhost:9200/_cat/nodes?v'
host         ip        heap
.percent ram.percent load node.role master name
mwubuntu1   
127.0.1.1            8           4 0.00 d         *      New Goblin


여기서 우리는 현재 cluster 있는 단일 node name "New Goblin"임을 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/689

[The REST API]

이제 우리는 실행된 node (cluster) 가지고 있다. 다음 단계는 실행중인 node(cluster) 어떻게 communicate하는지를 이해하는 것이다. 운이 좋게도, elasticsearch 이해하기 쉽고 강력한 REST API 제공한다. 여러분은 REST API 통해서 cluster interact 있다. API 이용해서 있는 작업들은 다음과 같다.


  • Cluster, node, index health, status, statistics 체크
  • Cluster, node, index data, metadata 관리
  • Index 대한 CRUD(Create, Read, Update, Delete) 검색 작업 수행
  • Paging, sorting, filtering, scripting, faceting, aggregation 등의 많은 advanced search 작업 실행
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/688