2017-02-17 133 views
0
存在於不同的指數

我有以下查詢查詢基於在Elasticsearch

{ 
    "from":0, 
    "size":50000, 
    "_source":[ 
     "T121", 
     "timestamp" 
    ], 
    "sort":{ 
     "timestamp":{ 
     "order":"asc" 
     } 
    }, 
    "query":{ 
     "bool":{ 
     "must":{ 
      "range":{ 
       "timestamp":{ 
        "gte":"2017-01-17 11:44:41.347", 
        "lte":"2017-02-18 11:44:47.878" 
       } 
      } 
     }, 
     "must":{ 
      "exists":{ 
       "field":"T121" 
      } 
     } 
     } 
    } 
} 

http://172.22.23.169:9200/index1,index2,Index3/_search?pretty

有了這個網址我要查詢過一些在Elasticsearch指數和只返回這些領域其中特定領域存在的文件。

如果在其中一個文檔中存在「field1」或「field2」或「fiedl3」的情況下,我可以在「exists」子句中定義 ,否則不要,或者我有腳本這樣的情況?

回答

1

要搜索在所有指數使用>http://172.22.23.169:9200/_search?pretty

要跨選定索引搜索添加以下過濾器「布爾」過濾

"must": { 
    "terms": { 
    "_index": [ 
     "index1", 
     "index2" 
    ] 
    } 
} 

對於多中用OR「存在」,你可以用should條款有多個存在,並控制搜索記錄指定「minimum_should_match」。

{ 
    "from":0, 
    "size":50000, 
    "_source":[ 
    "T121", 
    "timestamp" 
    ], 
    "sort":{ 
    "timestamp":{ 
     "order":"asc" 
    } 
    }, 
    "query":{ 
    "bool":{ 
     "must":{ 
     "range":{ 
      "timestamp":{ 
      "gte":"2017-01-17 11:44:41.347", 
      "lte":"2017-02-18 11:44:47.878" 
      } 
     } 
     }, 
     "should":[ 
     { 
      "exists":{ 
      "field":"field1" 
      } 
     }, 
     { 
      "exists":{ 
      "field":"field2" 
      } 
     }, 
     { 
      "exists":{ 
      "field":"field3" 
      } 
     } 
     ] 
    } 
    } 
} 
+0

非常感謝,我會試試看! –