3.3.2. İstemci API (Client)#
Log Search uygulamasının rest api uçlarını kullanmayı sağlayan yapıdır.
Bağımlılıklar#
Gradle Bağımlılıkları
YAML#
hvl:
logger:
search:
url: ${LOGGER_SEARCH_URL:http://hvlloggersearch:8093}
path: ${LOGGER_SEARCH_PATH:/es}
indices-name: ${LOGGER_SEARCH_INDICES_NAME:hvl-*}
hvl-infra üzerinden Config Server kullanıldığı durumlarda bootstrap.yml dosyasındaki spring.cloud.config.profile pathine hvl-logger değerinin eklenmesi gerekmektedir. Böylece yukarıdaki özelliklerin ve daha fazlasının olduğu application-hvl-logger.yml dosyası projeye dahil olacaktır.
Uyarı
hvl.logger.producer.enabled
değeri geliştirme ortamları için varsayılan olarak false
olarak ayarlanmıştır.
Rest Servis Tanımı#
Feign client uçlarını kullanabilmek için configurasyon bean'ine asağıdaki annotasyonlar eklenmelidir.
Yukarıda anlatılan tanımlama yapıldıktan sonra kullanım için
kullanılacağı sınıfa servis ile ilgili kod bloğu eklenmelidir.
Kullanım#
Example
// username == 'acuhadaroglu' && (eventType == ('event1' OR 'event2'))
final HvlLogSearchQueryModel logSearchQueryModel = HvlLogSearchQueryModel.builder()
.withIndices("*")
.and("username", HvlSearchOperation.STRING_EQUALS, "acuhadaroglu")
.subCriteria(HvlLogSearchSubQueryModel.builder()
.or("eventType", HvlSearchOperation.STRING_EQUALS, "event1")
.or("eventType", HvlSearchOperation.STRING_EQUALS, "event2")
)
.build();
// (username == ('acuhadaroglu' OR 'may')) && (eventType == ('event1' OR 'event2'))
final HvlLogSearchQueryModel logSearchQueryModel = HvlLogSearchQueryModel.builder()
.withIndices("index1*,index2*")
.subCriteria(HvlLogSearchSubQueryModel.builder()
.or("username", HvlSearchOperation.STRING_EQUALS, "acuhadaroglu")
.or("username", HvlSearchOperation.STRING_EQUALS, "may")
)
.subCriteria(HvlLogSearchSubQueryModel.builder()
.or("eventType", HvlSearchOperation.STRING_EQUALS, "event1")
.or("eventType", HvlSearchOperation.STRING_EQUALS, "event2")
)
.build();
try {
//list için
List<HvlEventLogModel> = logSearchRestService.searchList(logSearchQueryModel).getBody();
//page için
HvlPage<HvlEventLogModel> = logSearchRestService.searchPage(logSearchQueryModel).getBody();
} catch (HvlLogSearchException e) {
throw new HvlEventLogSearchException(e.getMessage());
}
Rest Client Kullanımı
Service metodlarının detaylarına swagger dokümanından ulaşabilirsiniz.
Sıralama#
Logger search uygulaması ile elasticsearch üzerinden sorgulama yaparken dikkat edilmesi gereken bazı durumlar vardır. Aksi durumda sonuçlar istenildiği gibi dönmeyebilir.
Varsayılan durumda elasticsearch üzerinden yapılan sorgulamalarda türkçe karakter ve büyük/küçük harfler gruplanarak sonuç dönmektedir. Örneğin; büyük harf ile başlayan kelimeler, küçük harf ile başlayanlardan önce sıralanmaktadır, veya türkçe karakterler en son gelerek yanlış sıralanmaktadır.
String
alanların düzgün sıralanmasını sağlamak için sortPropertiesTypeMap
alanı kullanılmalıdır.
final HvlLogSearchQueryModel logSearchQueryModel = HvlLogSearchQueryModel.builder()
.withIndices("*")
//some criteria
.withPage(HvlLogSearchPage.builder()
.withSort(new HvlSort(HvlDirection.ASC, new String[]{"username"}))
.withSortPropertiesTypeMap(Map.of("username", HvlLogSearchDataType.STRING))
.build())
.build();