2017-01-10 5 views
1

Как получить все имена полей (не значения) в _source с помощью elastic4s? Я хочу список всех отображаемых полей. я пытался делать что-то вроде:Как получить все поля в 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

Вы хотите список полей для каждого документа или это e одинаково для всего типа? Вы можете использовать 'getMapping (/)', если это за тип – Pandawan

+0

, это похоже на хороший подход. проверить мое обновление – igx

ответ

Смежные вопросы