Der Datenspeicher, der Aggregations-Querys ausführt, basiert auf Elasticsearch (derzeit Version 1.7.X). Elasticsearch bietet Echtzeitsuchen und Aggregationsfunktionen, wobei die Statistiken-API eine schlanke, sicherheitserweiterte Schicht darüber bildet. In den Beispielen wird die Elasticsearch-Query- und Aggregations-Sprache verwendet.
-
Die Sprache, die im filtern-Feld des Query-JSON verwendet wird, ist in der Dokumentation zu Elasticsearch Query DSL beschrieben.
-
Die Sprache, die im aggregations-Feld des Query-JSON verwendet wird, ist vollständig in der Dokumentation zu Elasticsearch Aggregations beschrieben.
Indizes
Verschiedene Datentypen befinden sich in verschiedenen Indizes. Zum Beispiel befinden sich Job-Daten im jobPart-Index und costs-Daten im costs-Index. Erforderliche Daten können durch Angabe des Index in der API-Endpunkt-URL für Statistiken spezifiziert werden.
Übergeordnetes Element-untergeordnetes Element-Dokumente
Teile der Informationen über einen Job befinden sich in zwei verschiedenen Dokumenten in der Elasticsearch-DB. Diese Dokumente stehen in einer übergeordnetes Element-untergeordnetes Element-Beziehung. Zum Beispiel befinden sich Informationen über das Projekt eines Jobs im übergeordnetes Element-Dokument, während sich Informationen über den Job selbst im untergeordnetes Element-Dokument befinden. Je nach benötigten Informationen befinden sich Aggregationen entweder vor der übergeordnetes Element-untergeordnetes Element-Aggregation der Daten oder danach, aber die Datenaggregation selbst sollte in allen Querys vorhanden sein.
Allgemeine Daten
Analyse
{
"id": Zeichenfolge,
"createdBy": <User>,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"innerId": number,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean,
"trashedBy": <User>,
"type": Zeichenfolge
}
Assignment
{
"name": Zeichenfolge,
"linguist": <User>,
"vendor": <Vendor>
}
Einreicher-Portal
{
"id": Zeichenfolge,
"createdBy": <User>,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean,
"urlId": string
}
Auftraggeber
{
"id": Zeichenfolge,
"name": Zeichenfolge
}
Kunde
{
"id": Zeichenfolge,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"externalId": Zeichenfolge,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean,
}
CostCenter
{
"id": Zeichenfolge,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean,
}
Fachbereich
{
"id": Zeichenfolge,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean
}
Job
{
"id": Zeichenfolge,
"createdBy": <User>,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"extension": Zeichenfolge,
"fileName": Zeichenfolge,
"groupCount": number,
"innerId": "1",
"languagePair": string,
"lastModified": Date,
"localePair": string,
"sourceLanguage": string,
"sourceLocale": string,
"tags": string[],
"targetLanguage": string,
"targetLocale": string",
"taskId": string,
"trashed": boolean,
"trashedBy": <User>,
"uid": Zeichenfolge
}
JobPart
{
"id": "19",
"assignedTo": <Assignment>,
"beginIndex": number,
"buyer": <Buyer>,
"createdBy": <User>,
"dateCreated": Date,
"dateDue": Date,
"endIndex": number,
"groupCount": number,
"innerId": string,
"lastModified": Date,
"level": number,
"status": Zeichenfolge,
"tags": [],
"uid": Zeichenfolge,
"workflowStep": <WorkflowStep>
}
MtEngine
{
"id": Zeichenfolge,
"deleted": boolean,
"default_: boolean,
"includeTags": boolean,
"name": Zeichenfolge,
"tags": string[],
"type": Zeichenfolge,
}
NetRateScheme
{
"id": Zeichenfolge,
"createdBy": <User>,
"dateCreated": Date,
"dateDeleted": Date,
"default_": boolean,
"deleted": boolean,
"externalId": Zeichenfolge,
"name": Zeichenfolge,
"tags": string[],
}
PriceList
{
"id": Zeichenfolge,
"createdBy": <User>,
"currency": string,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"default_": boolean,
"deleted": boolean,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean,
"unit": Zeichenfolge
}
Projekt
{
"id": Zeichenfolge,
"buyer": <Buyer>,
"client": <Client>,
"costCenter": <CostCenter>,
"createdBy": <User>,
"dateCreated": Date,
"dateDeleted": Date,
"dateDue": Date,
"dateTrashed": Date,
"deleted": boolean,
"domain": <Domain>,
"innerId": number,
"languagePairs": string[],
"localePairs": string[],
"mtEngine": <MtEngine>,
"name": Zeichenfolge,
"note": Zeichenfolge,
"owner": <User>,
"sourceLanguage": string,
"sourceLocale": string,
"status": Zeichenfolge,
"subDomain": <SubDomain>,
"tags": string[],
"targetLanguages": string[],
"targetLocales": string[],
"trashed": boolean,
"trashedBy": <User>,
"uid": Zeichenfolge,
"vendor": <Vendor>
}
Kostenvoranschlag
{
"id": Zeichenfolge,
"createdBy: <User>,
"currency": string,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"innerId": string,
"name": Zeichenfolge,
"status": Zeichenfolge,
"tags": string[],
"trashed": boolean,
"trashedBy": <User>,
"unit": Zeichenfolge
}
Dienstleistung
{
"id": Zeichenfolge,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"name": Zeichenfolge,
"publicName": string,
"tags": string[],
"trashed": boolean,
"type": Zeichenfolge
}
Teilbereich
{
"id": Zeichenfolge,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"name": Zeichenfolge,
"tags": string[],
"trashed": boolean
}
User
{
"id": number,
"active": boolean,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"E-Mail": Zeichenfolge,
"firstName": Zeichenfolge,
"fullName": Zeichenfolge,
"innerId": number,
"jobTitle": string,
"lastName": string,
"Sprache": Zeichenfolge,
"note": Zeichenfolge,
"role": Zeichenfolge,
"tags": string[],
"timeZone": string,
"trashed": boolean,
"userName": Zeichenfolge
}
Auftragnehmer
{
"id": Zeichenfolge,
"candidate": boolean,
"dateCreated": Date,
"dateDeleted": Date,
"dateTrashed": Date,
"deleted": boolean,
"tags": string[],
"Token": Zeichenfolge,
"trashed": boolean
}
WorkflowStep
{
"id": Zeichenfolge,
"abbreviation": Zeichenfolge,
"dateDeleted": Date,
"dateTrashed": Date,
"name": Zeichenfolge,
"Reihenfolge": number,
"tags": string[],
"trashed": boolean
}
Analyse Index
Daten Aggregation
"data": {
"children": {
"type": "analysisType"
}
}
übergeordnetes Element Dokument
{
"automationWidget": <AutomationWidget>,
"project": <Project>,
"service": <Service>
}
untergeordnetes Element Dokument
{
"analysis": <Analysis>,
"jobPart": <JobPart>,
"Job": <Job>,
"netRateScheme": <NetRateScheme>,
"priority": number,
"data": {
"MT": {
"match0": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match100": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match50": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match75": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match85": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match95": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
}
},
"repetitions": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"TM": {
"match0": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match100": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match101": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match50": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match75": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match85": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
},
"match95": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
}
},
"total": {
"characters": number,
"pages": number,
"percent": number,
"segments": number,
"words": number
}
}
}
API-Index
Daten Aggregation
"data": {
"children": {
"type": "apiType"
}
}
übergeordnetes Element Dokument
{
"user": <User>
}
untergeordnetes Element Dokument
{
"request": {
"date": Date,
"host": Zeichenfolge,
"ipv4": Zeichenfolge,
"ipv6": Zeichenfolge,
"location": Zeichenfolge,
"method": Zeichenfolge
},
"Antwort": {
"date": Date,
"duration": number,
"Status": number
},
"API": {
"action": Zeichenfolge,
"asynch": boolean,
"type": Zeichenfolge,
"uri": Zeichenfolge,
"ver": Zeichenfolge
}
}
Kostenindex
Daten Aggregation
"data": {
"children": {
"type": "costsType"
}
}
übergeordnetes Element Dokument
{
"automationWidget": <AutomationWidget>,
"project": <Project>,
"service": <Service>
}
untergeordnetes Element Dokument
{
"analysis": <Analysis>,
"Job": <Job>,
"jobPart": <JobPart>,
"netRateScheme": <NetRateScheme>,
"priceList": <PriceList>,
"quote": <Quote>,
"workflowStep": <WorkflowStep>,
"priority": number,
"data": {
"MT": {
"match0": number,
"match100": number,
"match50": Zahl,
"match75": Zahl,
"match85": Zahl,
"match95": Zahl
},
"repetitions": Zahl,
"TM": {
"match0": number,
"match100": number,
"match101": Zahl,
"match50": Zahl,
"match75": Zahl,
"match85": Zahl,
"match95": Zahl
},
"total": Zahl
}
}
Job-Teil-Index
Datenaggregation
"data": {
"children": {
"type": "jobPartType"
}
}
übergeordnetes Element Dokument
{
"automationWidget": <AutomationWidget>,
"project": <Project>,
"service": <Service>
}
untergeordnetes Element Dokument
{
"job": <Job>,
"jobPart": <JobPart>
"data": {
"counts": {
"chars": {
"total": Nummer,
"confirmed": Nummer,
"notConfirmed": Nummer,
"locked": Nummer,
"notLocked": Nummer,
"confirmedAndLocked": number,
"notConfirmedAndLocked": Nummer,
"completed": Nummer,
"notCompleted": Nummer
},
"groups": {
"total": Nummer
},
"segments": {
"total": Nummer,
"confirmed": Nummer,
"notConfirmed": Nummer,
"locked": Nummer,
"notLocked": Nummer,
"confirmedAndLocked": number,
"notConfirmedAndLocked": Nummer,
"completed": Nummer,
"notCompleted": number,
"MT": {
"postEdited": number,
"relevant": number,
"notRelevant": number
},
"qa": {
"checked": number,
"notChecked": number
}
},
"words": {
"total": Nummer,
"confirmed": Nummer,
"notConfirmed": Nummer,
"locked": Nummer,
"notLocked": Nummer,
"confirmedAndLocked": number,
"notConfirmedAndLocked": Nummer,
"completed": Nummer,
"notCompleted": Nummer
},
"qa": {
"warnings": number,
"ignoredWarnings": number,
"notIgnoredWarnings": number
}
}
}
-
HTTP-Anfragen werden in Postman ausgeführt.
-
Melden Sie sich über ein PM- oder Admin-Profil an und erhalten Sie ein Login-Token über eine Login-API.
-
POST-Anfragen an
api/v3/API/jobPart?Token=<your_login_token>
Gesamtzahl der Jobs
Query
{
"aggregations": {
"data": {
"children": {
"type": "jobPartType"
}
}
}
}
Antwort
{
"hits": {
"total": 359
},
"aggregations": {
"data": {
"doc_count": 14417
}
}
}
Unter dem Feld aggregations antwortete die data-Aggregation mit 14.417 übereinstimmenden Dokumenten, die im Feld doc_count angezeigt werden.
Gesamtzahl der Wörter der Ausgangssprache
Query
{
"aggregations": {
"data": {
"children": {
"type": "jobPartType"
},
"aggs": {
"wordCount": {
"sum": {
"field": "data.volume.words"
}
}
}
}
}
}
Antwort
{
"hits": {
"total": 359
},
"aggregations": {
"data": {
"doc_count": 14417,
"wordCount": {
"value": 6893067
}
}
}
}
Gesamtzahl der Wörter der Ausgangssprache aufgeteilt nach Zielsprache
Query
{
"aggregations": {
"data": {
"children": {
"type": "jobPartType"
},
"aggs": {
"byTargetLanguage": {
"terms": {
"field": "job.targetLanguage",
"size": 3
},
"aggs": {
"wordCount": {
"sum": {
"field": "data.volume.words"
}
}
}
}
}
}
}
}
Antwort
{
"hits": {
"total": 359
},
"aggregations": {
"data": {
"byTargetLanguage": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 10071,
"buckets": [
{
"doc_count": 1835,
"wordCount": {
"value": 702721
},
"key": "cs"
},
{
"doc_count": 1491,
"wordCount": {
"value": 2602529
},
"key": "de"
},
{
"doc_count": 1020,
"wordCount": {
"value": 92676
},
"key": "fi"
}
]
},
"doc_count": 14417
}
}
}
Die Buckets Entität wird in der Antwort angezeigt. Wenn das Modul Statistiken angewiesen wird, die Daten nach einer Kategorie aufzuteilen, wird das Ergebnis als eine Liste von Buckets dargestellt. Jeder Bucket enthält einen Key, der definiert, welche Daten dieser Bucket repräsentiert (in diesem Fall eine Zielsprache), und einen Wert (weitere Aggregationen), der spezifisch nur für diesen Teil des Datensatzes ist.
Gesamtzahl der Jobs aufgeteilt nach Projekt Status
Query
{
"aggregations": {
"projectStatus": {
"terms": {
"field": "project.status"
},
"aggs": {
"data": {
"children": {
"type": "jobPartType"
}
}
}
}
}
}
Antwort
{
"hits": {
"total": 359
},
"aggregations": {
"projectStatus": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"doc_count": 326,
"data": {
"doc_count": 14318
},
"key": "NEW"
},
{
"doc_count": 31,
"data": {
"doc_count": 89
},
"key": "COMPLETED"
},
{
"doc_count": 1,
"data": {
"doc_count": 4
},
"key": "ASSIGNED"
},
{
"doc_count": 1,
"data": {
"doc_count": 6
},
"key": "DECLINED_BY_VENDOR"
}
]
}
}
}
Das Modul Statistiken wurde angewiesen, die Daten vor der Daten Aggregation nach Projekt Status aufzuteilen.
Gesamtzahl der Jobs aus neuen Projekten
Query
{
"filter": {
"term": {
"project.status": "NEW"
}
},
"aggregations": {
"data": {
"children": {
"type": "jobPartType"
}
}
}
}
Antwort
{
"hits": {
"total": 326
},
"aggregations": {
"data": {
"doc_count": 14318
}
}
}
Das Filtern Feld wird in der Query verwendet. Dies schränkt die Daten vor den nachfolgenden Aggregationen ein.