Distance Units
거리가 필요할 경우, 예를 들어 Geo Distance Filter의 distance parameter와 같은 경우에 아무것도 단위가 명시되어 있지 않을 경우에는 기본적으로 미터단위이다. "1km"나 "2mi" (miles)와 같이 다른 단위로도 distance를 명시할 수 있다. 전체 리스트는 다음과 같다.
mi or miles : Mile
yd or yards : Yard
ft or feet : Feet
in or inch : Inch
km or kilometers : Kilometer
m or meters : Meter
cm or centimeters : Centimeter
mm or millimeters : Millimeter
NM, nmi or nauticalmiles : Nautical Mile
Geohash Cell Filter의 precision (정밀도) parameter는 위에 명시된 unit으로 거리를 표시한다. 하지만, unit이 명시되지 않았을 경우에는 geohash의 길이로 precision을 해석한다.
Fuzziness
어떤 query나 API는 fuzziness parameter를 사용하여 부정확한 fuzzy matching을 지원한다. Fuzziness parameter는 query에 사용된 field의 type에 따른 context에 따른다.
Numeric, date and IPv4 fields
숫자나 날짜, IPv4 field가 query에 있을 때, fuzziness는 +/- margin으로 해석한다. 마치 다음과 같은 Range Query처럼 동작한다.
-fuzziness <= field value <= +fuzziness
Fuzziness parameter는 2나 2.0처럼 숫자로 표시되어야 한다. Date field는 밀리초단위의 long값으로 해석된다. 하지만, 시간 단위를 가진 string값 - "1h"와 같은 - 은 단위에서 의미하는 값으로 받아들인다. Ip field는 long이나 또 다른 IPv4 주소 (long으로 변환될 수 있는) 를 수용한다.
String fields
Query에 string이 사용되었을 경우, fuzziness는 Levenshtein Edit Distance (http://en.wikipedia.org/wiki/Levenshtein_distance) - 하나의 문자가 숫자로 변경되는 - 로 처리된다.
Fuzziness parameter는 다음과 같이 정리할 수 있다.
0, 1, 2 : Levenshtein Edit Distance에 허용되는 최대값
AUTO : 길이에 따라 edit distance를 계산함.
0..1 : 정확히 일치하는 경우
1..5 : one edit만 허용
>5 : two edit 허용
AUTO는 fuzziness에 대한 최적값을 계산한다.
0.1..1.0 : 공식을 통해서 edit distance를 계산한다. Length(term) * (1.0 - fuzziness). 예를 들어 길이 10을 가진 fuzziness가 0.6이면 edit distance는 10 * (1.0 - 0.6) = 4.0이다.
[NOTE]
모든 API에 대한 Fuzzy Like This Query (http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-flt-query.html) 측면에서 edit distance의 최대값은 2이다.
Result Casing
모든 REST API는 case parameter를 가질 수 있다. camelCase가 설정될 때는 결과에 속한 모든 field name에 camel casing이 있는 결과를 리턴할 것이다. 아니면 underscore가 사용된 결과가 리턴될 것이다. Index된 source document에는 적용되지 않는다.
JSONP
사용가능할 때, 모든 REST API는 JSONP 결과 내, callback parameter 결과를 받을 수 있다. Config.yaml 파일에 다음 항목을 추가함으로 수행 가능하다.
http.jsonp.enable:true
사용가능하도록 설정되었을 때, elasticsearch의 아키텍처 때문에 security risk를 야기한다는 것에 주의하라. 특정 환경하에서는 attacker가 여러분의 브라우저를 이용해 JSONP request를 만들어서 Elasticsearch Server의 데이터를 탈취할 수 있다.
Request body in query string
POST가 아닌 request에 대해서 body를 수용하지 않는 library에 대해서 string parameter의 source query를 이용해 body를 전송할 수 있다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/721