스팬(span) 쿼리
스팬(span) 쿼리
span 쿼리를 사용하면 정밀한 위치 기반 검색을 수행할 수 있어요. span 쿼리는 지정된 쿼리 용어의 순서와 근접성을 제어하는 저수준의 특수 쿼리랍니다. 주로 법률 문서와 특허를 검색하는 데 사용돼요.
span 쿼리에는 다음 쿼리 유형이 포함됩니다.
- Span containing: 안에 더 작은 스팬을 포함하는 더 큰 스팬을 반환해요. span_within 쿼리의 반대예요.
- Span field masking: 한 필드를 다른 필드처럼 보이게 만들어 span 쿼리가 여러 필드에서 작동하게 해요. 같은 텍스트가 다른 분석기로 인덱싱될 때 유용해요.
- Span first: 필드 시작 지점부터 지정된 위치 수 안에 나타나는 용어나 구(phrase)를 매치해요.
- Span multi-term: prefix, wildcard, fuzzy 같은 다중 용어 쿼리가 span 쿼리 안에서 작동하게 해줘요.
- Span near: 서로 지정된 거리 안에 나타나는 용어나 구를 찾아요. 일치가 특정 순서로 나타나도록 요구하는 것을 지원해요.
- Span not: 다른 span 쿼리와 겹치는 일치를 제외해요.
- Span or: 제공된 span 쿼리 중 하나라도 충족하는 문서를 매치해요.
- Span term: 다른 span 쿼리에서 사용하기 위한 위치 정보를 유지하면서 단일 용어를 매치해요.
- Span within: 더 큰 스팬으로 둘러싸인 더 작은 스팬을 반환해요. span_containing 쿼리의 반대예요.
출처: 문서
본문
설정 (Setup)
이 섹션의 예제를 실행해 보려면 다음 단계로 예제 인덱스를 구성하세요.
1단계: 인덱스 만들기
먼저 전자상거래 의류 웹사이트용 인덱스를 만들어요. description 필드는 기본 표준 분석기(standard analyzer)를 사용하고, description.stemmed 하위 필드는 어간 추출(stemming)을 위해 english 분석기를 적용해요.
PUT /clothing
{
"mappings": {
"properties": {
"description": {
"type": "text",
"analyzer": "standard",
"fields": {
"stemmed": {
"type": "text",
"analyzer": "english"
}
}
}
}
}
}
2단계: 데이터 인덱싱
인덱스에 샘플 문서를 인덱싱해요.
POST /clothing/_doc/1
{
"description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
}
POST /clothing/_doc/2
{
"description": "Beautiful long dress in red silk, perfect for formal events."
}
POST /clothing/_doc/3
{
"description": "Short-sleeved shirt with a button-down collar, can be dressed up or down."
}
POST /clothing/_doc/4
{
"description": "A set of two midi silk shirt dresses with long sleeves in black. "
}