我有這樣的文件在我的ElasticSearch指數:XML的標記值分組ElasticSearch文件(在一個字符串字段)
{
"took" : 31,
"timed_out" : false,
"_shards" : {
"total" : 68,
"successful" : 68,
"failed" : 0
},
"hits" : {
"total" : 9103,
"max_score" : 8.823501,
"hits" : [{
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>1</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:18</timeStamp><step>3</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:26</timeStamp><step>1</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:27</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:27</timeStamp><step>3</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}
]
}
}
這裏是消息字段的XML格式:
<root>
<flux>MyFlux</flux>
<requestId>123</requestId>
<timeStamp>2016-26-08T09:37:17</timeStamp>
<step>2</step>
<status>ok</status>
<body><xml><myobject><field1>value1</field1></myobject></xml></body>
</root>
我想構建一個查詢,可以將我的文檔按RequestId值(位於消息字段的XML內容中)進行分組。 我預計這種答案:
{
"took" : 31,
"timed_out" : false,
"_shards" : {
"total" : 68,
"successful" : 68,
"failed" : 0
},
"hits" : {
"total" : 9103,
"max_score" : 8.823501,
"hits" : [...],
"aggregations" : {
"myaggs" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [{
"key" : "123",
"documents" : [{
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>1</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:18</timeStamp><step>3</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}
]
}, {
"key" : "456",
"documents" : [{
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>123</requestId><timeStamp>2016-26-08T09:37:26</timeStamp><step>1</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:27</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:27</timeStamp><step>3</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}, {
"_index" : "ESB",
"_type" : "MDOrderFO",
"_id" : "AVaxDzEGBclOg4W8YiW1",
"_score" : 8.823501,
"_source" : {
"message" : "<root><flux>MyFlux</flux><requestId>456</requestId><timeStamp>2016-26-08T09:37:17</timeStamp><step>2</step><status>ok</status><body><xml><myobject><field1>value1</field1></myobject></xml></body></root>",
"timestamp" : "2016-08-22T07:02:57.085Z",
"logger_name" : "MDOrderFOToFO"
}
}
]
}
]
}
}
}
}
我很新與ElasticSearch和我一個星期......花在這個在這個時候,我甚至不知道這是可能的。
我真的希望你能幫助我。 預先感謝您。
和當然,作爲一個法語的人,對不起我的英語
編輯
- 不幸的是,我不能編輯映射。我無法訪問將日誌保存到E.S.的過程的一部分。
- 實際上,我給出的格式與現實相比很簡單。在映射級別和XML內容中記錄了大量其他技術信息。 上下文:將日誌推入E.S.的BUS應用程序。有3個步驟(1:接收,2:路由,3:發送)。它記錄有關請求狀態(確定,失敗)以及在此請求中傳輸的對象的信息。 我正在處理的應用程序的目的是顯示所有已轉換的請求的業務信息是日期範圍的BUS應用程序。
所以在我的查詢,我想:
1.骨料通過的requestId我的日誌(每個組包含應該1個日誌在在在發送步驟的發送步驟和0或1日誌接收步驟中,0或1個對數)
2 。篩選的日誌的日期,得到的組在接收步驟
3.取第10組按日期降序
謝謝您的回答,但就像我在我的編輯說:我不能改變的映射:/ – MickaJsd