package
;
/**
* Created by wyf on 16/9/25.
*/
import
;
import
;
import
;
import
;
import
;
import
;
import
;
import
;
import
org.;
import
org.;
import
;
import
;
import
;
public
class
SearchImpl
implements
ISearch {
private
static
final
Logger LOGGER = (SearchImpl.
class
);
private
SearchClientProvider searchClientProvider;
public
SearchImpl() {
searchClientProvider =
new
SearchClientProvider();
();
}
public
Map<String, Object> save(String index, String type, String id, Map<String, Object> data) {
TransportClient client = ();
IndexRequestBuilder builder = (index, type, id);
IndexResponse response = builder
.setSource(data)
.execute()
.actionGet();
(
"save index:=>index:{}, type:{}, id:{}, data:{}, rsp:{}"
, index, type, id, data, response);
return
data;
}
public
int
update(String index, String type, String id, Map<String, Object> data) {
int
i =
2
;
do
{
try
{
if
(_innerUpdate(index, type, id, data))
return
1
;
}
catch
(VersionConflictEngineException e) {
((
"update index:=>index:%s, type:%s, id:%s, data:%s, rsp:%s"
,
index, type, id, data, ()), e);
}
}
while
((i--) >
0
);
return
_innerUpdate(index, type, id, data) ?
1
:
0
;
}
public
int
delete(String index, String type, String id) {
TransportClient client = ();
DeleteRequestBuilder builder = (index, type, id);
DeleteResponse response = ().actionGet();
(
"delete index:=>index:{}, type:{}, id:{}, rsp:{}"
,
index, type, id, response);
return
() ?
1
:
0
;
}
public
Map<String, Object> get(String index, String type, String id) {
TransportClient client = ();
GetRequestBuilder builder = (index, type, id);
GetResponse response = ().actionGet();
return
() ? () :
null
;
}
private
boolean
_innerUpdate(String index, String type, String id, Map<String, Object> data) {
TransportClient client = ();
GetRequestBuilder getRequestBuilder = (index, type, id);
GetResponse getResponse = ().actionGet();
if
(()) {
final
long
version = ();
final
Map<String, Object> source = ();
(data);
IndexRequestBuilder builder = (index, type, id);
IndexResponse response = builder
.setVersion(version)
.setSource(source)
.execute()
.actionGet();
(
"update index:=>index:{}, type:{}, id:{}, data:{}, rsp:{}"
,
index, type, id, data, response);
return
true
;
}
throw
new
RuntimeException((
"can not get document:=>index:%s, type:%s, id:%s "
, index, type, id));
}
}