2017-12-20 6 views
0

내부의 일치 값이 나는 ElasticSearch 지수가 다음탄성 검색 - 문서처럼 보이는 경우 다중 값 필드

{ 
    "labels": ["Common label for doc 1", "Other possible label"], 
    "year": 1923, 
    "boolProp": true 
}, 
{ 
    "labels": ["Only one label here"], 
    "year": 1812, 
    "boolProp": true 
}, 
... 

나는 labels 필드를 쿼리로, 내가 좋아하는 것 또한 최고의 문서를 검색 만 할 일치하는 라벨

이 필드는 실제로 하나의 집계 된 문자열로 인덱싱됩니다. 이 종류의 쿼리에서는 내 labels 필드를 중첩 된 개체로 변환해야합니까? 나는 거기에 더 직접적인 접근 방식이 궁금 해서요 ...

+0

"문서 1에 대한 공통 레이블", "다른 가능한 레이블", "여기에 하나의 레이블 만 있음"과 같은 전체 레이블에 대해 전체 텍스트 검색을 시도하거나 정확한 어울리는? 즉,'possible label'을 질의 할 때,''다른 가능한 레이블 ''이 반환 될 것으로 기대합니까? – sam

+0

이 필드에 전체 텍스트 검색이 필요합니다. – Kevin

답변

0

편도는 Highlighting을 사용하는 것입니다.

이것은 상당히 풍부한 기능이지만 다음 예는 목표를 달성하는 데 도움이 될 수 있습니다.

{ 
    "query": { 
     "match": { 
      "myfield": "another" 
     } 
    }, 
    "highlight": { 
     "fields": { 
      "myfield": { 
       "type": "plain" 
      } 
     }, 
     "pre_tags": [""], 
     "post_tags": [""] 
    } 
} 

당신은 일치하는 텍스트가 강조 유지하거나 pre_tagspost_tags 그냥 원래의 텍스트를 표시 할 빈 지정할 수도 있습니다.

응답의 highlight 필드는 일치하는 원본 소스 배열의 조회수 만 포함합니다.

{ 
    ... 
    "hits": { 
     "total": 1, 
     "max_score": 0.28582606, 
     "hits": [ 
      { 
       "_index": "test", 
       "_type": "mytype", 
       "_id": "AWB6-u6V3-7fA7oZt-aX", 
       "_score": 0.28582606, 
       "_source": { 
        "myfield": [ 
         "My favorite toy", 
         "Another toy for me" 
        ] 
       }, 
       "highlight": { 
        "myfield": [ 
         "Another toy for me" 
        ] 
       } 
      } 
     ] 
    } 
} 

배열의 둘 이상의 값이 일치하면 모두 반환됩니다. 중첩 된 문서 또는 부모 - 자식 관계를 이용하고 그에서 내부 안타를 얻어 언급 한 바와 같이

{ 
    ... 
    "hits": { 
     "total": 1, 
     "max_score": 0.3938048, 
     "hits": [ 
      { 
       "_index": "blah", 
       "_type": "mytype", 
       "_id": "AWB6-u6V3-7fA7oZt-aX", 
       "_score": 0.3938048, 
       "_source": { 
        "myfield": [ 
         "My favorite toy", 
         "Another toy for me" 
        ] 
       }, 
       "highlight": { 
        "myfield": [ 
         "My favorite toy", 
         "Another toy for me" 
        ] 
       } 
      } 
     ] 
    } 
} 

는 확실히 다른 옵션이 있습니다. 강조 표시는 원본 문서 구조를 유지 관리 할 수있는 유일한 해결책이었습니다.

+0

정말 유망한이 기능에 대해 알지 못했습니다. 나는 그것을 시도 할 것이다! 자세한 답변 주셔서 감사합니다! – Kevin