배경
ElasticSearch(ES)를 레거시 애플리케이션과 자주 통합 데이터 구조와 인덱싱 요구 사항의 차이로 인해 문제가 발생합니다. 복잡한 관계형 스키마의 경우 데이터를 비정규화하고 항목을 평면화하면 성능을 향상하고 쿼리를 단순화할 수 있습니다.
질문:
여러 항목 바인딩(n)으로 데이터베이스를 평면화하려면 어떻게 해야 합니까? :m 관계)를 ES에서 최적의 인덱싱으로 사용하려면?
해결책:
1. 데이터 비정규화:
관련 엔터티의 삽입된 배열을 포함하여 모든 관련 데이터를 포함하는 제품 문서를 만듭니다. 스키마 예시는 다음과 같습니다.
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] }
2. 매핑 유형:
새 스키마와 일치하도록 매핑 유형을 구성합니다:
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" } } } } }
3. SQL 쿼리:
관련 엔터티를 결합하고 플래그 제목을 연결하는 쿼리를 사용하여 데이터베이스에서 데이터를 검색합니다.
위 내용은 여러 엔터티 바인딩을 사용하여 ElasticSearch 인덱스 구조를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!