GET <인덱스명>/_search
형식으로 사용하며 쿼리를 입력하지 않으면 전체 도큐먼트를 찾는 match_all 검색을 합니다.q
파라메터를 사용해서 검색어를 입력할 수 있습니다. 이렇게 요청 주소에 검색어를 넣어 검색하는 방식을 URI 검색이라고 합니다.hits.total.value
부분에 검색 결과 전체에 해당되는 문서의 개수가 표시되고 다시 그 안의 hits:[ ]
구문 안에 배열로 가장 정확도가 높은 문서 10개가 나타납니다. 이 정확도를 relevancy(렐러번시 라고 읽습니다) 라고 하며 뒤에서 다시 설명하도록 하겠습니다.AND
, OR
, NOT
의 사용이 가능하며 반드시 모두 대문자로 입력해야합니다.test/_doc/3
도큐먼트 만이 결과로 리턴되었습니다. 검색어 value 을 field 필드에서 찾고 싶으면 다음과 같이 <필드명>:<검색어>
형태로 입력합니다. 검색은 항상 필드를 지정해서 하는 것이 좋습니다.query
지정자로 시작합니다. 그 다음 레벨에서 쿼리의 종류를 지정하는데 위에서는 match 쿼리를 지정했습니다. 그 다음은 사용할 쿼리 별로 문법이 상이할 수 있는데 match 쿼리는 <필드명>:<검색어>
방식으로 입력합니다.logs-2018-01
, logs-2018-02
… 와 같이 날짜별로 저장된 인덱스들이 있다면 이 인덱스들을 모두 logs-*/_search
명령으로 한꺼번에 검색이 가능합니다. 특히 시간순으로 따라 쌓이는 로그 데이터를 다룰 때는 인덱스를 일단위 등으로 구분하는것이 좋습니다. 나중에 필드 구조가 변경되거나 크기가 커져서 샤드 설정을 변경하거나 할 때 더욱 용이합니다.,
로 나열하거나 와일드카드 *
문자로 묶을 수 있습니다._all
지정자를 사용하여 GET _all/_search
와 같이 실행하면 클러스터에 있는 모든 인덱스를 대상으로 검색이 가능합니다. 하지만 _all
은 시스템 사용을 위한 인덱스 같은 곳의 데이터까지 접근하여 불필요한 작업 부하를 초래하므로 _all
은 되도록 사용하지 않도록 합니다.