2017-01-10 4 views
1

elastic4s를 사용하여 _source에서 모든 필드 이름 (값이 아님)을 얻는 방법은 무엇입니까? 모든 매핑 된 필드의 목록을 원합니다. 내가 좋아하는 일을 시도 :elasticsearch에서 모든 필드를 얻는 방법

search in indexName/indexType sourceInclude "_source" limit q.limit aggregations(
       aggregation terms "agg0" field "_field_names" size 0 

      ) 

또는

search in indexName/indexType sourceInclude "_source" sourceExclude ("_all", "_type", 
       "_uid", "_version", "_index", "_score", "_id") limit q.limit aggregations(
       aggregation terms "agg0" field "_field_names" size 0 

      ) 

하지만 그것을하지 않았다. 나는 모든 메타 데이터 필드를 가지고뿐 아니라 _source 미만

"aggregations" : { 
    "agg0" : { 
     "doc_count_error_upper_bound" : 0, 
     "sum_other_doc_count" : 0, 
     "buckets" : [ { 
     "key" : "_all", 
     "doc_count" : 1500 
     }, { 
     "key" : "_source", 
     "doc_count" : 1500 
     }, { 
     "key" : "_type", 
     "doc_count" : 1500 
     }, { 
     "key" : "_uid", 
     "doc_count" : 1500 
     }, { 
     "key" : "_version", 
     "doc_count" : 1500 
     } 
.. more fields 

==== 업데이트 ===

나는이 방법을 발견

val map = getMapping indexName /indexType} 
val y = map.get("properties").asInstanceOf[java.util.Map[String, _]] 
y.keys.toList 

더 나은 방법을이를 같은 결과가 나왔습니까?

+0

각 문서에 대한 필드 목록을 원하십니까 또는 그것 일까? 전체 유형에 대해 동일한가? 덕분에 형식이 – Pandawan

+0

이라면'getMapping (/)'을 사용할 수 있습니다. 이것은 좋은 접근 방법입니다. 내 업데이트를 체크 아웃 – igx

답변