2016-07-27 1 views
2

문제점 : 쿼리 및 집계를 수행하는 인덱스가있는 문자열 속성이 있습니다. 해당 속성이 분석되고 조건 집합이 분석되지 않는 조건 집합을 사용하여 terms-queries를 수행하고 싶습니다. 이전 버전의 elasticsearch에는 다중 영역 매핑이 있었지만 2.0 버전 이후로 사라졌습니다. 어떻게하면 될까요?Elasticsearch.net v. 2.3+ 라이브러리 (C#)에서 다 영역 매핑 대신 사용할 수 있습니까?

(!) 참고 : 가 나는 그것이 efficent 솔루션처럼 보이지 않기 때문에, 내 인덱스에서 해당 속성을 복제하고 분석하고 다른 하나는 같은-분석되지로 중복 중 하나를 표시하지 않도록하고 싶습니다.

라이브러리 (C#) : Elasticsearch.net 2.3.3 및 NEST 2.3.3을 사용합니다.

모든 의견을 환영합니다.

답변

3

multi_field 맵핑은 여전히 ​​Elasticsearch 2.x 및 NEST 2.x에 존재합니다. 여기에 예를

client.Map<Document>(m => m 
    .Index("index-name") 
    .AutoMap() 
    .Properties(p => p 
     .String(s => s 
      .Name(n => n.Location) 
      .Fields(f => f 
       .String(fs => fs 
        .Name("raw").NotAnalyzed() 
       ) 
      ) 
     ) 
    ) 
); 
다음

Location 속성이 적용된 기본 Standard 분석기와 multi_field로 매핑되는입니다; 이 값은 인덱스 내의 location 필드 내에 있습니다. 또한 location.raw 필드는 색인이 생성되어 분석되지 않습니다.

client.Search<Document>(s => s 
    .Query(q => q 
     .Term(f => f.Location, "location") 
    ) 
); 

을 것 그리고

client.Search<Document>(s => s 
    .Size(0) 
    .Aggregations(a => a 
     .Terms("top_locations", ta => ta 
      .Field(f => f.Location.Suffix("raw")) 
     ) 
    ) 
); 
+0

, 당신에게 선생님을 많이 감사 할 것 용어 집합 내에 있지 분석 속성을 사용하는

는 분석 location 속성을 사용하여 용어 쿼리를 수행하려면! –

+0

걱정하지 않아도됩니다. :) –