2017-03-02 1 views
1

현재 Elastic4s v5.0을 사용하고 있는데, 여전히 여러 가지 방법으로 필드를 색인화하는 데 사용되는 다중 필드 유형이 있습니다.Elastic4s의 Multifield 5.x

elasticClient.execute(createIndex("foo") mappings (
    mapping("bar").as(
    multiField("baz").as(
     textField("baz") analyzer myAnalyzer, 
     textField("original") index NotAnalyzed 
    ) 
) 
) 

는 그러나, 나는 다음과 같은 오류 얻을 :

No handler for type [multi_field] declared on field [] 

대답 ElasticSearch 5: MapperParserException with multi_field 여기 https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html 문서 대신 "필드"를 사용 말한다, 그러나 나는 elastic4s에서이 작업을 수행하는 방법을 찾을 수 없습니다.

답변

2

Elasticsearch에서 모든 멀티 필드에는 부모 필드와 비슷한 종류의 보조 필드 인 기본 필드가 있고 보조 필드가 있습니다. 기본 필드 (기본 및 보조는 나의 용어 임)는 a으로 액세스하고 보조 필드는 a.b, a.c 등으로 액세스합니다. 그냥 a, b, c 시퀀스의 종류와 같은 형제 자매로이 있다고 생각하기 때문에

은, 먼저 다중 필드로 상상 얼마나하지 않을 수 있습니다. 그래서 이것을 이해할 가치가 있습니다.

elastic4s에서 원하는 모든 필드에 .fields을 사용하면이 필드가 부모과 결합되어 다중 필드가됩니다. 따라서 귀하의 사례는 다시 쓰여질 것입니다. asfields의 별칭입니다 내가 fields 그래서 난 여기 사용되는 더 읽을 생각

client.execute { 
    createIndex("foo").mappings(
     mapping("bar").fields(
     textField("baz").fields(
      textField("inner1") analyzer PatternAnalyzer, 
      textField("inner2") index NotAnalyzed 
     ) 
    ) 
    ) 
    } 

참고.

+0

귀하의 설명은 매우 기분 좋았습니다. 감사합니다. – cowboybebop