我已经建立了从表中的SQL服务器Elasticsearch返回旧的SQL结果
{
"type":"jdbc",
"jdbc":
{
"driver":"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"url":"jdbc:sqlserver://[my_ip];databaseName=mega",
"user":"sa","password":"******",
"sql":"SELECT [OrderID],[CustomerName],[UserFullName],[Status] FROM [Orders_Table]",
"poll":"5s",
"index": "mega",
"type": "orders_search",
"schedule" : "0 0-59 0-23 ? * *"
}
}
中提取数据的索引的问题是,我收到unrelevant查询结果。
例如:]是应仅作为包含在一次数据库返回的行密钥。
{
"from" : 0, "size" : 5,
"query": {
"multi_match": {
"query": "5220668",
"fields": [ "_all" ]
}
}
}
结果:事情是错误的结果。 我期待在数据库中看到只有一个命中。而不是查询检索该行的全寿命周期状态
{
"took": 12,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": null,
"hits": [
{
"_index": "mega",
"_type": "handledorders_search",
"_id": "AU3OlBkh6JN7xIrOkzjm",
"_score": null,
"_source": {
"Status": "NEW",
"Date": "2015-06-07T03:00:12.110Z",
"UserFullName": "my name",
"CustomerName": "cust name",
"OrderID": 5220668
},
"sort": [
1433646012110
]
},
{
"_index": "mega",
"_type": "handledorders_search",
"_id": "AU3Ok0E-6JN7xIrOkvpF",
"_score": null,
"_source": {
"Status": "NEW",
"Date": "2015-06-07T03:00:12.110Z",
"UserFullName": "my name",
"CustomerName": "cust name",
"OrderID": 5220668
},
"sort": [
1433646012110
]
},
{
"_index": "mega",
"_type": "handledorders_search",
"_id": "AU3Ole0-6JN7xIrOk7Yo",
"_score": null,
"_source": {
"Status": "FIX",
"Date": "2015-06-07T03:00:12.110Z",
"UserFullName": "my name",
"CustomerName": "cust name",
"OrderID": 5220668
},
"sort": [
1433646012110
]
},
{
"_index": "mega",
"_type": "handledorders_search",
"_id": "AU3OlQL86JN7xIrOk3eH",
"_score": null,
"_source": {
"Status": "CLOSE",
"Date": "2015-06-07T03:00:12.110Z",
"UserFullName": "my name",
"CustomerName": "cust name",
"ExternalOrderID": 5220668
},
"sort": [
1433646012110
]
}
]
}
}
不同的状态为同一订单ID保持这种命名法是很重要的 。那有什么问题? –
看来你的订单有两次相同的状态,你确定查询只执行一次吗?在数据中,OrderId也成为最后一条记录中的ExternalOrderId。我会先检查数据并检查查询执行的次数。 –