Dostępna jest definicja WADL pod adresem: https://<nazwa_serwera_hgdb>[:port]/mercury-ws-app/restServices/CaseSearchExtRest.wadl np. https://testcluster.hgdb.io/mercury-ws-app/restServices/CaseSearchExtRest.wadl.
Rozszerzony zbiór metod związanych z wyszukiwaniem i agregacją danych systemu HgDB:
- dateMetricQuery(POST) - zapytanie agregujące dane po zadanym polu typu Date (data).
- fieldMetricQuery(POST) - zapytanie zwracające liczby dokumentów powiązanych z danym polem i jego wartością.
- groupByQuery(POST) - metoda dająca możliwość realizacji zapytań agregujących - z klauzulą "group by".
- searchByQuery(POST) - podstawowa metoda wyszukiwania spraw w oparciu o zapytanie do indeksu Lucene.
Metody dateMetricQuery(POST), fieldMetricQuery(POST), groupByQuery(POST) to usługi korzystające ze specjalnie skonstruowanych kolektorów danych składowanych w indeksie Lucene. Trzeba mieć świadomość, że wykonywane operacje dotyczą tylko pól, których wartości składowane są w indeksie.
Dodatkowo usługa zawiera metody pozwalające na analizę wydajności danego zapytania:
- explainPlanGroupByQuery(POST) - żądanie zwraca plan wykonania zapytania agregującego "group by". Pozwala na analizę wydajności wykonania zapytania bez jego wykonania.
- explainPlanSearchByQuery(POST) - żądanie zwraca plan wykonania zapytania wyszukiwania. Pozwala na analizę wydajności wykonania zapytania bez jego wykonania.
dateMetricQuery(POST)
Usługa pozwalająca na agregację danych w zależności od zdefiniowanego w żądaniu pola daty.
Use Case
Wykorzystanie usługi do prezentacji agregacji danych na osi czasu. Przykładem może być prezentacja na wykresie (wykresy poniżej przedstawiają liczby spraw "zamkniętych" i "otwartych" w różnych przedziałach czasowych, źródło: panel Grafana):
Żądanie usługi
Opis żądania wysyłanego do usługi - parametry wejściowe:
Parametr | Opis | Wymagany? | Przykład |
---|---|---|---|
context | Kontekst żądania (zobacz Context i CaseHeader) | Tak | { userName: 'anonymous', userFullName: null, locale: null, timeZone: null, maxResults: 1, currentRole: 'anonymous', userRoles: null, sourceOfRequest: null, maxDepthResult: 1, decodeResult: DECODE_DATE_AND_LOB, ignoreCaseHeaderInResponse: false, } |
dateFieldsNames | Lista nazw pól o typie wyszukiwania DateField (zobacz opis Typy pól indeksu Lucene), które będą podstawą agregacji danych po datach. Listę pól możesz uzyskać wykorzystując usługę CaseIndexerFieldsManagerRest.getFieldsBySerachType(POST). | Tak | [ "mrc_createDate" ] |
duration | Zakres agregacji danych. Pole może przyjmować następujące wartości:
Use Case Definiowane zakresu jest wygodne ze względu na przejrzystość zwracanego wyniku:
| Tak | "PER_HOUR" |
query | Opcjonalne, dodatkowe zapytanie Lucene pozwalające na zawężenie agregowanych danych do spraw spełniających konkretne warunki. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania. | Nie | "mrc_status: *" |
sortAscending | Flaga definiująca kierunek sortowania po dacie. Przyjmuje wartości:
| Tak | true |
additionalDateRange | Zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". Warto pamiętać, że najlepszy efekt zapytania otrzymamy dodając warunek dla pola, które zostało wskazane jako podstawa agregacji w parametrze żądania | Tak | "mrc_createDate:[946681200000 TO 1564608394143]" |
page | Definicja strony pobieranego wyniku. | Tak | { size: 10, number: 1 } |
Odpowiedź usługi
Odpowiedź usługi, której działanie zakończyło się sukcesem, to obiekt typu ExcelData, który jest opisany w artykule PagedResult - wynik wyszukiwania.
Jeżeli z jakiegoś powodu wykonanie usługi zakończy się porażką, odpowiedź przyjmuje następujące parametry wyjściowe:
Parametr | Opis | Przykład |
---|---|---|
errorCode | Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"? | null |
errorMessage | Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . | null |
fieldMetricQuery(POST)
Usługa pozwalająca na pobranie listy wyrażeń (wartości) występujących w danym polu sprawy wraz z liczbą dokumentów, w których to wyrażenie występuje.
Use Case
Jako narzędzie SEO (od ang. search engine optimization) – działania służące optymalizacji, zwiększeniu oglądalności stron internetowych, produktów w wyszukiwarkach czyli mechanizm, który można wykorzystać do promocji najpopularniejszych wartości (słów kluczowych) danego pola występujących w bazie HgDB, np. najpopularniejsze miasta, czy też może najczęściej serwisowani klienci. Przykładem na zastosowanie może być też Indeks:Polski - Najpopularniejsze słowa 1-1000 wersja Jerzego Kazojcia (co nie znaczy, że ta lista została uzyskana przy wykorzystaniu tej usługi).
Wartości liczbowe uzyskane w wyniku działania usługi maja charakter statystyczny, tzn. są one uzyskane na podstawie statystyk indeksu Lucene. Nie uwzględniają one faktu usunięcia dokumentu z indeksu Lucene.
Żądanie usługi
Opis żądania wysyłanego do usługi - parametry wejściowe:
Parametr | Opis | Wymagany? | Przykład |
---|---|---|---|
context | Kontekst żądania (zobacz Context i CaseHeader) | Tak | { userName: 'anonymous', userFullName: null, locale: null, timeZone: null, maxResults: 1, currentRole: 'anonymous', userRoles: null, sourceOfRequest: null, maxDepthResult: 1, decodeResult: DECODE_DATE_AND_LOB, ignoreCaseHeaderInResponse: false, } |
fieldName | Nazwa pola indeksu Lucene, dla którego pobrana zostanie metryka wartości. | Tak | "mrc_luceneDocumentMemo" |
loadTop | Flaga determinująca to czy znalezione mają być wyrażenia o najwyższej występowalności. Przyjmuje wartości | Tak | true |
filterClause | Dodatkowe kryterium filtrowania wartości. Można stosować wildcard np. aby pobrać wszystkie wartości na literę 'a' jako kryterium podamy "a*". | Nie | null |
sortAscending | Flaga definiująca kierunek sortowania po wartościach pola. Przyjmuje wartości:
| Tak | true |
page | Definicja strony pobieranego wyniku. | Tak | { size: 10, number: 1 } |
Odpowiedź usługi
Odpowiedź usługi, której działanie zakończyło się sukcesem, to obiekt typu ExcelData, który jest opisany w artykule PagedResult - wynik wyszukiwania. Parametry odpowiedzi header
oraz columnTypes
zawsze przyjmują te same wartości:
"header": { "A": "value", "B": "filterClause", "C": "count" }, "columnTypes": { "A": "STRING", "B": "STRING", "C": "LONG" }
Jeżeli z jakiegoś powodu wykonanie usługi zakończy się porażką, odpowiedź przyjmuje następujące parametry wyjściowe:
Parametr | Opis | Przykład |
---|---|---|
errorCode | Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"? | null |
errorMessage | Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . | null |
groupByQuery(POST)
Implementacja usługi pozwala na realizację żądań grupujących (agregujących) dane na podstawie klauzuli "Group By".
Use Case
Usługę można wykorzystać do wszelkiego rodzaju analiz danych.
Żądanie usługi
Opis żądania wysyłanego do usługi - parametry wejściowe:
Parametr | Opis | Wymagany? | Przykład |
---|---|---|---|
context | Kontekst żądania (zobacz Context i CaseHeader) | Tak | { userName: 'anonymous', userFullName: null, locale: null, timeZone: null, maxResults: 1, currentRole: 'anonymous', userRoles: null, sourceOfRequest: null, maxDepthResult: 1, decodeResult: DECODE_DATE_AND_LOB, ignoreCaseHeaderInResponse: false, } |
query | Opcjonalne, dodatkowe zapytanie Lucene pozwalające na zawężenie agregowanych danych do spraw spełniających konkretne warunki. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania. | Nie | null |
groupByClause | Klauzula "Group By" agregująca dane składowane w indeksie Lucene. Zobacz rozdział Klauzula "Group By" gdzie znajdziesz opis jak konstruować zapytania agregujące. | Tak | "trunc(mrc_createDate, DD) as createDatePerMonth, count(1) as count" |
filterClause | Dodatkowe kryterium filtrowania wartości. Można stosować wildcard np. aby pobrać wszystkie wartości na literę 'a' jako kryterium podamy "a*". | Nie | null |
additionalDateRange | Zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". | Tak | "mrc_createDate:[946681200000 TO 1564608394143]" |
page | Definicja strony pobieranego wyniku. | Tak | { size: 10, number: 1 } |
resultTypeName | Nazwa typu jaki ma reprezentować wynik grupowania. Typ (definicja typu sprawy) o podanej nazwie musi być zdefiniowany w bazie HgDB. | Nie | null |
resultPkPropertyName | Nazwa pola z unikalną wartością wskazująca na wiersz/element listy w wyniku. Parametr opcjonalny. Jeżeli nie zostanie zdefiniowany pole przyjmie wartość "rowId". | Nie | null |
Odpowiedź usługi
Odpowiedź przyjmuje następujące parametry wyjściowe:
Parametr | Opis | Przykład |
---|---|---|
errorCode | Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"? | null |
errorMessage | Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . | null |
queryStats | Statystyki wykonania zapytania w postaci obiektu QueryStats. | { "allExecTime": 1339, "mainPrepareTime": 11, "collValidationTime": 1, "mainCollExecTime": 0, "mainCollExecCount": 47281, "subCollExecTime": 4, "subCollExecCount": 8, "subExecLeve1Time": 1337, "subExecLeve2Time": 0, "subExecLeve3Time": 0, "subExecLeve4Time": 0, "initResultSetTime": 6, "resultSetSize": 3 } |
dto | Wynik działania usługi w postaci obiektu PagedResult. Elementem listy jest obiekt w postaci definicji sprawy. Obiekt nie jest rzeczywistą sprawą składowaną w bazie HgDB. Obiekt sprawy zawiera pole mrcCaseHeader typu CaseHeader, który ma dwa istotne pola
|
Więcej przykładów wykorzystania usługi znajdziesz w Przykłady agregacji danych.
sarchByQuery(POST)
Implementacja usługi pozwala na realizację żądań wyszukujących sprawy składowane w bazie danych HgDB.
Use Case
Usługę można wykorzystać do wszelkiego rodzaju analiz danych.
Żądanie usługi
Opis żądania wysyłanego do usługi - parametry wejściowe:
Parametr | Opis | Wymagany? | Przykład |
---|---|---|---|
context | Kontekst żądania (zobacz Context i CaseHeader) | Tak | { userName: 'anonymous', userFullName: null, locale: null, timeZone: null, maxResults: 1, currentRole: 'anonymous', userRoles: null, sourceOfRequest: null, maxDepthResult: 1, decodeResult: DECODE_DATE_AND_LOB, ignoreCaseHeaderInResponse: false, } |
query | Zapytanie Lucene pozwalające na wyszukanie spraw spełniających konkretne warunki. Zobacz rozdział Zapytania wyszukujące gdzie znajdziesz opis jak konstruować zapytania. | Tak | "mrc_status:A AND (id:\"2018.Q1\" OR id:2018.04)" |
sortClause | Klauzula sortowania wyniku wyszukiwania: póle wraz z akronimem kierunku (ASC, DESC) | Nie | null |
additionalDateRange | Dodatkowe zapytanie zawężające oparte o pole typu Date (data). Kryterium zapytani musi być zdefiniowane jako zakres czyli "od do". | Nie | "mrc_createDate:[946681200000 TO 1564608394143]" |
page | Definicja strony pobieranego wyniku. | Tak | { size: 10, number: 1 } |
resultTypeName | Nazwa typu jaki ma reprezentować wynik grupowania. Typ (definicja typu sprawy) o podanej nazwie musi być zdefiniowany w bazie HgDB. | Nie | null |
Odpowiedź usługi
Odpowiedź przyjmuje następujące parametry wyjściowe:
Parametr | Opis | Przykład |
---|---|---|
errorCode | Kod błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . Informacje na temat danych zawartych w wartości tego parametru można uzyskać czytając artykuł Co oznacza wartość pola "errorCode"? | null |
errorMessage | Komunikat błędu. Gdy operacja zakończy się sukcesem, przyjmuje wartość null . | null |
queryStats | Statystyki wykonania zapytania w postaci obiektu QueryStats. | { "allExecTime": 1339, "mainPrepareTime": 11, "collValidationTime": 1, "mainCollExecTime": 0, "mainCollExecCount": 47281, "subCollExecTime": 4, "subCollExecCount": 8, "subExecLeve1Time": 1337, "subExecLeve2Time": 0, "subExecLeve3Time": 0, "subExecLeve4Time": 0, "initResultSetTime": 6, "resultSetSize": 3 } |
dto | Wynik działania usługi w postaci obiektu PagedResult. Elementem listy jest znaleziony obiekt sprawy składowany w bazie HgDB. |