Amazon OpenSearch 서비스에서 데이터 검색 - Amazon OpenSearch Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon OpenSearch 서비스에서 데이터 검색

Amazon OpenSearch Service에서는 검색 및 요청 본문 URI 검색을 비롯하여 여러 가지 일반적인 방법으로 문서를 검색할 수 있습니다. OpenSearch 서비스는 사용자 지정 패키지, SQL 지원, 비동기 검색과 같은 검색 환경을 개선하는 추가 기능을 제공합니다. 포괄적인 OpenSearch 검색 API 참조는 설명서를 참조하십시오. OpenSearch

참고

다음 샘플 요청과 함께 사용할 수 OpenSearch APIs 있습니다. 일부 요청은 이전 버전의 Elasticsearch에서 작동하지 않을 수 있습니다.

URI검색

범용 리소스 식별자 (URI) 검색은 가장 간단한 검색 형식입니다. URI검색에서는 쿼리를 HTTP 요청 매개변수로 지정합니다.

GET https://search-my-domain.us-west-1.es.amazonaws.com/_search?q=house

샘플 응답은 다음과 같습니다.

{ "took": 25, "timed_out": false, "_shards": { "total": 10, "successful": 10, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 85, "relation": "eq", }, "max_score": 6.6137657, "hits": [ { "_index": "movies", "_type": "movie", "_id": "tt0077975", "_score": 6.6137657, "_source": { "directors": [ "John Landis" ], "release_date": "1978-07-27T00:00:00Z", "rating": 7.5, "genres": [ "Comedy", "Romance" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg", "plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.", "title": "Animal House", "rank": 527, "running_time_secs": 6540, "actors": [ "John Belushi", "Karen Allen", "Tom Hulce" ], "year": 1978, "id": "tt0077975" } }, ... ] } }

기본적으로 이 쿼리는 모든 색인의 모든 필드에서 검색어 house를 검색합니다. 검색 범위를 좁히려면 다음 위치에 색인 (movies) 과 문서 필드 (title) 를 지정하십시오URI.

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house

요청에 추가 매개변수를 포함할 수 있지만 지원되는 매개변수는 OpenSearch 검색 옵션의 일부분만 제공합니다. 다음 요청은 20개 결과(기본 개수 10개가 아님)를 반환하고 연도 기준으로 정렬합니다(_score 기준이 아님).

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc

요청 본문 검색

더 복잡한 검색을 수행하려면 HTTP 요청 본문과 쿼리용 OpenSearch 도메인별 언어 () DSL 를 사용하십시오. 쿼리를 DSL 사용하면 전체 범위의 OpenSearch 검색 옵션을 지정할 수 있습니다.

참고

텍스트 필드 값에 유니코드 특수 문자를 포함할 수 없습니다. 포함하면 값이 특수 문자로 구분된 여러 값으로 구문 분석됩니다. 이렇게 잘못된 구문 분석으로 인해 의도하지 않은 문서 필터링이 발생하여 문서 액세스에 대한 제어가 손상될 수 있습니다. 자세한 내용은 OpenSearch설명서에서 텍스트 필드의 유니코드 특수 문자에 대한 참고 사항을 참조하십시오.

다음 match 쿼리는 최종 URI검색 예제와 비슷합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "sort": { "year": { "order": "desc" } }, "query": { "query_string": { "default_field": "title", "query": "house" } } }
참고

request HTTP GETPOST for 요청 본문 검색은 가능하지만 모든 HTTP 클라이언트가 요청에 요청 본문을 추가하는 것을 지원하는 것은 GET 아닙니다. _search API POST가 더 보편적인 선택입니다.

많은 경우에 전체 필드는 아니지만 여러 필드를 검색해야 합니다. multi_match 쿼리를 사용합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title", "plot", "actors", "directors"] } } }

필드 부스팅

특정 필드를 "부스팅"하여 검색 관련성을 개선할 수 있습니다. 부스트는 한 필드의 일치 항목을 다른 필드의 일치 항목보다 가중하는 배수입니다. 다음 예제에서 title 필드의 john에 대한 일치 항목은 plot 필드의 일치 항목보다 두 배, actors 또는 directors 필드의 일치 항목보다 네 배 많이 _score에 영향을 미칩니다. 그러면 결과에서 John Wick, John Carter 같은 영화는 검색 결과의 거의 맨 위에 있고, John Travolta가 주인공인 영화는 거의 맨 아래에 있습니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "john", "fields": ["title^4", "plot^2", "actors", "directors"] } } }

검색 결과 강조 표시

highlight옵션은 쿼리가 하나 이상의 필드와 일치하는 경우 hits 배열 내에 추가 객체를 OpenSearch 반환하도록 지시합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} } } }

쿼리가 plot의 내용과 일치할 경우 히트는 다음과 같이 표시됩니다.

{ "_index": "movies", "_type": "movie", "_id": "tt0091541", "_score": 11.276199, "_source": { "directors": [ "Richard Benjamin" ], "release_date": "1986-03-26T00:00:00Z", "rating": 6, "genres": [ "Comedy", "Music" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg", "plot": "A young couple struggles to repair a hopelessly dilapidated house.", "title": "The Money Pit", "rank": 4095, "running_time_secs": 5460, "actors": [ "Tom Hanks", "Shelley Long", "Alexander Godunov" ], "year": 1986, "id": "tt0091541" }, "highlight": { "plot": [ "A young couple struggles to repair a hopelessly dilapidated <em>house</em>." ] } }

기본적으로 는 일치하는 문자열을 <em> 태그로 OpenSearch 감싸고, 일치 항목에 대해 최대 100자의 컨텍스트를 제공하며, 구두점, 공백, 탭 및 줄 바꿈을 식별하여 내용을 문장으로 나눕니다. 이러한 설정은 모두 사용자 지정이 가능합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} }, "pre_tags": "<strong>", "post_tags": "</strong>", "fragment_size": 200, "boundary_chars": ".,!? " } }

개수 API

문서 내용에 관심이 없고 일치하는 개수만 알고 싶다면 _count API 대신 를 사용할 수 있습니다 _searchAPI. 다음 요청에서는 query_string 쿼리를 사용하여 로맨틱 코미디를 식별합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_count { "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } } }

샘플 응답은 다음과 같습니다.

{ "count": 564, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 } }

검색 결과 페이지 매김

많은 수의 검색 결과를 표시해야 하는 경우 파라미터를 사용하여 페이지 매김을 구현할 수 있습니다.

특정 시점

포인트 인 타임 (PIT) 기능은 시간이 고정된 데이터세트에 대해 다양한 쿼리를 실행할 수 있는 검색 유형입니다. 이 방법은 에서 선호되는 페이지 매김 방식이며 OpenSearch, 특히 심층 페이지 매김의 경우 더욱 그렇습니다. OpenSearch 서비스 버전 2.5 PIT 이상에서 사용할 수 있습니다. 에 대한 자세한 내용은 PIT 을 참조하십시오Amazon OpenSearch 서비스의 특정 시점 검색.

from 파라미터를 size 추가합니다.

페이지를 매기는 가장 간단한 방법은 fromsize 파라미터를 사용하는 것입니다. 다음 요청은 검색 결과의 0 기반 인덱스 목록에서 20~39개 결과를 반환합니다.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "from": 20, "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } } }

검색 페이지 매김에 대한 자세한 내용은 설명서의 결과 페이지 매김을 참조하십시오. OpenSearch

Dashboards Query Language

대시보드 쿼리 언어 (DQL) 를 사용하여 대시보드에서 데이터와 시각화를 검색할 수 있습니다. OpenSearch DQL용어, 부울, 날짜 및 범위, 중첩 필드 등 4가지 기본 쿼리 유형을 사용합니다.

용어 쿼리

용어 쿼리를 사용하려면 검색하려는 용어를 지정해야 합니다.

용어 쿼리를 수행하려면 다음을 입력합니다.

host:www.example.com

부울 쿼리

부울 연산자 AND, ornot을 사용하여 여러 쿼리를 결합할 수 있습니다.

부울 쿼리를 수행하려면 다음을 붙여 넣습니다.

host.keyword:www.example.com and response.keyword:200

날짜 및 범위 쿼리

날짜 및 범위 쿼리를 사용하여 쿼리 전후의 날짜를 찾을 수 있습니다.

  • >는 지정한 날짜 후의 날짜 검색을 나타냅니다.

  • <는 지정한 날짜 전의 날짜 검색을 나타냅니다.

@timestamp > "2020-12-14T09:35:33"

중첩 필드 쿼리

문서에 중첩 필드가 있는 경우 검색할 문서 부분을 지정해야 합니다. 다음은 중첩 필드가 있는 샘플 문서입니다.

{"NBA players":[ {"player-name": "Lebron James", "player-position": "Power forward", "points-per-game": "30.3" }, {"player-name": "Kevin Durant", "player-position": "Power forward", "points-per-game": "27.1" }, {"player-name": "Anthony Davis", "player-position": "Power forward", "points-per-game": "23.2" }, {"player-name": "Giannis Antetokounmpo", "player-position": "Power forward", "points-per-game":"29.9" } ] }

를 사용하여 DQL 특정 필드를 검색하려면 다음을 붙여넣으세요.

NBA players: {player-name: Lebron James}

중첩 문서에서 여러 객체를 검색하려면 다음을 붙여 넣습니다.

NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}

범위 내에서 검색하려면 다음을 붙여 넣습니다.

NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}

문서에 다른 객체 내에 중첩된 객체가 있는 경우에도 모든 수준을 지정하여 데이터를 검색할 수 있습니다. 이렇게 하려면 다음을 붙여 넣습니다.

Top-Power-forwards.NBA players: {player-name:Lebron James}