如何将elasticsearch查询结果直接存储到新索引?

时间:2017-02-07 09:26:42

标签: elasticsearch

我有三个问题。

首先,我想知道是否可以使用单个查询将mtermvectors查询结果保存回新索引。

其次,如果第一个问题没问题,我想知道在保存结果时是否可以将当前格式更改为嵌套数据类型。

最后,我想知道我是否可以同时进行聚合。 有可能吗?

现在,我的代码在这里。

<pre>
GET /_mtermvectors?pretty=true 
{   
  "docs":[
  {   "_index": "test",    
    "_type": "type1",    
    "_id": "2",    
    "fields":["contents"],    
    "offsets":false,    
    "payloads":false,    
    "positions":false,    
    "term_statistics": true,
    "field_statistics":true,   
    "filter":{
    "min_term_freq":1,
    "max_doc_freq": 3
}   },   
 {   "_index": "test",    
   "_type": "type1",    
   "_id": "1",    
   "fields":["contents"],    
   "offsets":false,    
   "payloads":false,    
   "positions":false,    
   "term_statistics": true,
   "field_statistics":true,  
   "filter":{
  "min_term_freq":1,
  "max_doc_freq": 3
}   
} ] }


PUT /new_index
{
  "mappings": {
    "word": {
    "properties": {
       "termsarray": {
         "type": "nested",
          "properties": {
         "form": { 
           "type":"text",
           "fielddata": true
    }
        }
      }
   }
   }
}

}

GET new_index/_search
{
 "aggs" : {
    "termsarray" : {
        "nested" : {
            "path" : "termsarray"
        },
       "aggs" : {
    "word" : {
       "terms" : { 
         "field" : "termsarray.form",
          "order" : { "sum_score" : "desc" }
        },
        "aggs" : {
            "sum_score" : { "sum" : { "field" : "termsarray.score" }}
        }
    }
 }
     }
 }

}

2 个答案:

答案 0 :(得分:0)

基于this post on ES forum,无法将查询结果直接存储回ES作为新索引。您必须将数据提取到客户端并自己将它们推送到新索引中。

答案 1 :(得分:0)

使用LogStash,您可以将elasticsearch查询结果存储到新索引或现有索引中:

您必须结合使用elasticsearch输入

https://www.elastic.co/guide/en/logstash/current/plugins-inputs-elasticsearch.html

和弹性搜索输出

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html