4
내 React 응용 프로그램에서 검색 기능을 만들려고합니다.DynamoDB에서 "contains"를 사용하여 검색하는 방법
---------------------
movie_id | movie_name
---------------------
1 | name a
---------------------
2 | name b
---------------------
내가 반작용 응용 프로그램의 검색 입력의 "B"를 검색하고 결과로 DB에서 "이름 B"를 얻을 수있는 검색 기능을 만들고 싶어 :
나는이 DynamoDB의 테이블이 있습니다.
을 CONTAINS
으로 시도했으나 제대로 작동하지 않았으며 올바른 방법이 아닌 것으로 보입니다.
const SEARCH_KEYWORD = "b";
let params = {
TableName : 'TABLE_NAME',
KeyConditionExpression: "contains(#movie_name, :movie_name)",
ExpressionAttributeNames:{
"#movie_name": 'movie_name'
},
ExpressionAttributeValues:{
":movie_name": SEARCH_KEYWORD
}
};
documentClient.query(params, function(err, data) {
console.log(data);
});
DynamoDB의 내 반작용 응용 프로그램에 검색 기능을 만들 수있는 가장 좋은 방법은 무엇입니까?
검색 키워드로 쿼리를 실행하여 데이터에 키워드 값이 포함되어 있는지 확인하는 것이 의미가 있습니까?
너무 감사합니다! 그것은 작동합니다! 또 하나의 질문은 검색 기능을 구축하는 이상적인 방법일까요? 또는 이것을 할 수있는 더 좋은 방법이 있습니까? – Ohsik
@Ohsik, "contains"로 검색하는 것은 항상 테이블의 전체 스캔을 요구하기 때문에 절대로 적합하지 않습니다. 많은 양의 데이터가있는 경우 성능 문제가 발생할 수 있습니다. 그러나 이름이 "beginning with"인지 확인하는 것이'query' API와 함께 사용될 수 있고 인덱스로부터 이익을 얻습니다. 그러면 성능이 크게 향상됩니다. 그러나 분명히 "시작"은 "포함"과 다릅니다. – Zanon
@ Ohhik, 수백만 행의 "포함"을 사용해야하는 경우 [Elasticsearch] (https://aws.amazon.com/elasticsearch-service/) DynamoDB와의 통합을 검토하는 것이 좋습니다. – Zanon