>백엔드 개발 >PHP 튜토리얼 >N:M 관계에 대한 Elasticsearch 인덱스 구조를 설계하는 방법은 무엇입니까?

N:M 관계에 대한 Elasticsearch 인덱스 구조를 설계하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 15:14:01375검색

How to Design Elasticsearch Index Structure for N:M Relationships?

다중 엔터티 바인딩을 위한 Elasticsearch 인덱스 구조 설정

소개

Elasticsearch 통합(ES )을 기존 애플리케이션에 추가하는 것은 어려운 작업이 될 수 있습니다. 이 대화 상자는 레거시 데이터베이스에서 여러 엔터티 바인딩을 처리할 때 ES 인덱스 구조를 설정하는 문제를 해결합니다.

데이터베이스 구조

제공된 데이터베이스 구조는 세 개의 테이블을 제공합니다. 제품과 플래그 간의 N:M 관계를 나타내는 제품, 플래그 및 플래그제품. 목표는 효율적인 쿼리를 위해 최적화하면서 ES에서 이 구조를 복제하는 것입니다.

권장 접근 방식: 평면화

N:M 관계를 유지하기보다는 평면화하는 것이 좋습니다. 구조를 구성하고 플래그 정보가 포함된 제품 문서를 생성합니다. 이 접근 방식은 쿼리를 단순화하고 데이터 액세스를 향상시킵니다.

제품 문서 구조

평면화된 제품 문서에는 다음 필드가 포함됩니다.

  • id : 제품 ID(문자열, 분석되지 않음)
  • title: 제품 제목(문자열)
  • price: 제품 가격(double, null_value: 0.0)
  • flags: 플래그 제목 배열 (문자열, 분석되지 않음)

제품 문서 예:

{
   "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.