다중 엔터티 바인딩을 위한 Elasticsearch 인덱스 구조 설정
소개
Elasticsearch 통합(ES )을 기존 애플리케이션에 추가하는 것은 어려운 작업이 될 수 있습니다. 이 대화 상자는 레거시 데이터베이스에서 여러 엔터티 바인딩을 처리할 때 ES 인덱스 구조를 설정하는 문제를 해결합니다.
데이터베이스 구조
제공된 데이터베이스 구조는 세 개의 테이블을 제공합니다. 제품과 플래그 간의 N:M 관계를 나타내는 제품, 플래그 및 플래그제품. 목표는 효율적인 쿼리를 위해 최적화하면서 ES에서 이 구조를 복제하는 것입니다.
권장 접근 방식: 평면화
N:M 관계를 유지하기보다는 평면화하는 것이 좋습니다. 구조를 구성하고 플래그 정보가 포함된 제품 문서를 생성합니다. 이 접근 방식은 쿼리를 단순화하고 데이터 액세스를 향상시킵니다.
제품 문서 구조
평면화된 제품 문서에는 다음 필드가 포함됩니다.
제품 문서 예:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] } { "id": "018357657529fef056cf396626812", "title": "Beta", "price": 355.0, "flags": ["Discount"] }
제품 매핑 유형
해당 ES의 매핑 유형은 다음과 같습니다.
PUT products { "mappings": { "product": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "title": { "type": "string" }, "price": { "type": "double", "null_value": 0.0 }, "flags": { "type": "string", "index": "not_analyzed" } } } } }
데이터베이스에서 데이터 가져오기
ES로 수집하기 위해 데이터베이스에서 필요한 데이터를 검색하려면 다음 SQL 쿼리를 사용하세요. :
위 내용은 N:M 관계에 대한 Elasticsearch 인덱스 구조를 설계하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!