2013-06-13 2 views
1

elasticsearch를 최적화하려고합니다. 쿼리를 사용하는 부울 필드가 여러 개 있습니다. 나는 그들과 함께 할 수는 없지만 그것은 내 의뢰인에게 힘든 시간을 줄 것이다.elasticsearch에 부울 필드 인덱스가 필요합니까?

제 질문은 해당 필드를 "index":"yes"으로 설정하면 색인 생성 시간 및 크기 (걸리는 분명한 "저장"공간 제외)와 같은 색인 성능에 실제로 부정적인 영향을 미치는지 여부입니다.

부울 인덱스 필드가 실제로 더 많은 공간을 차지합니까? 그것은해서는 안된다. 또한, 탄성 검색뿐만 아니라 모든 DB에 대해 이러한 색인을 만드는 데 어떤 이점도 나타나지 않습니다.

그러나 필터링 할 수 있으려면 "index":"yes"을 지정해야합니다. 맞습니까?

답변

2

필드를 검색하려면 색인을 생성해야합니다. 기본적으로 boolean 필드의 색인이 생성되며 이렇게하려면 약간의 공간이 필요합니다. 문서 목록이 "myfield": true"myfield": false 인 곳에 표시됩니다.

이 색인을 유지하고 싶지 않다면, 문서를 찾으려 할 때 "myfield": true의 모든 문서를 통해 필드를 확인해야합니다.

해당 필드로 검색/필터링하지 않으려면 나중에 "index": "no"을 설정하십시오. 나중에이 필드에 대해 마음이 바뀌면 모든 색인을 다시 생성해야한다는 경고가 표시됩니다.

Have a look at the elaticsearch docs on mappings; the core types section 아래로 스크롤하여 부울 유형으로 스크롤하십시오.

+0

당신이 말한 것은 많은 의미를 갖습니다. 부울 필드에 대한 인덱스가있는 경우 해당 부울 인덱스의 사용은 부울 인덱스의 문서 ID 해시 위치로 이동하여 해당 테이블이 "참" 또는 "거짓"그룹. 저장소의 doc_id 해시로 이동하여 필드 값을 살펴 보는 것과 같은 노력이 아닌가요? 본질적으로 항목이 (true 또는 false) 집합에 있는지 확인하는 계산 작업이 서버 측에서 해당 필드 값을 확인하는 노력보다 작습니다. – eran

+0

네,하지만 검색이나 검색을하고 있습니까? 검색 중입니다. 즉, myfield = true 인 문서를 보내주십시오. 문서 ID가 이미 있고 필드 값을 알고 싶다면 색인을 사용하는 이유는 무엇입니까? – ramseykhalaf

+0

검색 (/ 필터)을 수행하고있었습니다. 나는 네가하는 말을 보았다. 감사! – eran

관련 문제