05. GET API - 01

Elastic Search/03. APIs 2015/05/19 20:30 용비

Get API index에서 id JSON 형태의 document 조회한다. 다음 예제는 twitter 불리는 index, tweet 불리는 type으로부터 id 값이 1 JSON document 얻는 예제이다.


curl -XGET 'http://localhost:9200/twitter/tweet/1'


위의 get operation 결과는 다음과 같다.


{
  
"_index" : "twitter",
  
"_type" : "tweet",
  
"_id" : "1",
  
"_version" : 1,
  
"found": true,
  
"_source" : {
      
"user" : "kimchy",
      
"postDate" : "2009-11-15T14:12:12",
      
"message" : "trying out Elasticsearch"
  
}
}


위의 결과에는 조회하고자 하는 document 있을 경우, document 대한 _index, _type, _id, _version, 실제 document 내용인 _source 담겨 있다. (response found 필드에 있는 값이 true 경우 데이터 조회 성공을 의미함)


또한 HEAD 사용하여 document 있는지 여부를 체크할 수도 있다. 예제는 다음과 같다.


curl -XHEAD -i 'http://localhost:9200/twitter/tweet/1'


Realtime


기본적으로 get API realtime이다. 그리고 index refresh rate 영향을 받지 않는다. (검색한 데이터가 보인다.) realtime GET 사용하지 못하게 하기 위해서는 realtime parameter false 설정하면 된다. 노드 설정에 있는 action.get.realtime 글로벌 설정값을 false 해도 된다.


Document 얻고자 때는 가져오고자 하는 fields 지정하면 된다. 가능하다면 저장되어 있는 fields 가져올 것이다. (fields 저장되어 있는 것과 맵핑되어 있다.) realtime GET 이용할 경우, 저장된 field라는 개념이 없다. (기본적으로 최소한 다음 flush까지의 기간 동안) 따라서 source 자체로부터 추출될 것이다. Realtime GET 사용할 , fleldㄴ가 저장된다고 하더라도 source로부터 flelds들이 load된다고 가정하는 것도 좋은 방법이다.


Optional Type


Get API _type optional로 허용한다. 모든 type 대해서 Id 첫번째 match되는 첫번째 document 가져오기 위해서 _all 설정하라.


Source filtering


기본적으로 get operation fields parameter 사용하지 않거나 _source field 사용할 없다면, _source field content 리턴한다. _source parameter 사용하여 _source 검색을 있다.


curl -XGET 'http://localhost:9200/twitter/tweet/1?_source=false'


전체 _source에서 두개의 field 필요하다면 필요한 부분을 포함시키는 _source_include 걸러내는 _source_exclude parameter 사용할 있다. 이것은 network overhead 줄일 있기 때문에 large document로부터 partial retrieval (부분 검색) 하는 경우 특히나 유용하다. 가지 parameter 콤마로 구분된 field list wildcard expression 가질 있다. 예를 들면 다음과 같다.


curl -XGET 'http://localhost:9200/twitter/tweet/1?_source_include=*.id&_source_exclude=entities'


Include 경우만 처리하고 싶다면 다음과 같이 짧게 표기할 있다.


curl -XGET 'http://localhost:9200/twitter/tweet/1?_source=*.id,retweeted'


Fields


Get operation field parameter 통해서 리턴받을 저장되어 있는 field 명시할 있다. 예를 들면 다음과 같다.


curl -XGET 'http://localhost:9200/twitter/tweet/1?fields=title,content'


이전 호환성 (backward compatibility) 위해서 요청된 field 저장되어 있지 않다면, _source (파싱하여 추출)로부터 가져올 것이다. 기능은 source filtering parameter 통해서 대체할 있다.


Document에서 추출된 Field 값은 항상 array로 리턴된다. _routing _parent 필드와 같은 Metadata field 결코 array 리턴되지 않는다. 또한 leaf field (개별 필드) field option 통해 리턴될 있다. 따라서 object field 리턴될 없고, 그러한 요청은 실패할 것이다.

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

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

트랙백 주소 :: http://www.yongbi.net/trackback/727

트랙백 RSS :: http://www.yongbi.net/rss/trackback/727

댓글을 달아 주세요

댓글 RSS 주소 : http://www.yongbi.net/rss/comment/727
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다