Migraation työnkulku
POST /v1/graph/query/translate vastaanottaa lähdekielen sekä teksti- tai JSON-kyselyn. Framework valitsee Query Translator Adapterin, soveltaa tuotteen kenttäkartan, validoi tuotetun gq/1.3-kyselyn ontologiaa vasten ja palauttaa kyselyn, häviöttömyyden, kartoitukset ja diagnostiikat. Käännös ei suorita kyselyä eikä kuluta varsinaisen graafikyselyn krediittejä.
Tuetut lähdekielet
| Kieli | Aliakset | Tuettu häviötön osajoukko |
|---|---|---|
| diffbot-dql | dql | Entiteettityyppi, litteät kenttäehdot, vertailut, or()/not(), has, Boolen ryhmät, tavalliset facetit, sortBy/revSortBy |
| elasticsearch-query-dsl | elasticsearch · elastic-query-dsl | bool, term, terms, range, exists, match_phrase, sort, _source includes, terms-aggregoinnit, size |
| elasticsearch-query-dsl | opensearch · opensearch-query-dsl | Sama JSON-osajoukko yhteisen Elastic/OpenSearch-adapterin kautta |
Diffbot DQL -migraatio
DQL ja Graph Query jakavat entiteettityypistä alkavan muodon, implisiittisen AND-operaation, kenttäpolut, vertailut, olemassaolotestit, Boolen lausekkeet ja facetit. Tuotteen kenttäkartta muuntaa tarjoajan ontologiakentät, kuten locations.country.name, nbEmployees ja industries, Graph Query -kentiksi. Aaltosulkeiden korreloidut DQL-ehdot kääntyvät häviöttömästi gq/1.3 Scoped Predicate -ehdoiksi, joten kaikki lapsiehdot osuvat samaan taulukkoalkioon.
{
"dialect": "diffbot-dql",
"mode": "strict",
"query": "type:Organization locations.country.name:"FI" nbEmployees>=100 sortBy:nbEmployees facet:industries"
}Elasticsearch- ja OpenSearch-migraatio
Anna entity_type, koska Elastic-indeksi ei määritä Graph Queryn juurityyppiä. bool must ja filter muuttuvat AND-ehdoiksi, must_not NOT-ehdoksi, pakollinen should-ryhmä OR-ehdoksi ja nested korreloiduksi Scoped Predicate -ehdoksi. term, terms, range, exists, match_phrase, järjestys, source includes, terms-aggregoinnit ja size kääntyvät suoraan. Vain pisteytykseen vaikuttavat should-ehdot ohitetaan varoituksella; analysoitu match, query_string, offsetit ja tarjoajakohtaiset search_after-arvot hylätään strict-tilassa.
{
"dialect": "opensearch-query-dsl",
"entity_type": "Organization",
"mode": "strict",
"query": {
"query": { "bool": { "filter": [
{ "term": { "country": "FI" } },
{ "range": { "employees": { "gte": 100 } } }
] } },
"sort": [{ "employees": "desc" }],
"_source": ["businessId", "employees", "industry"],
"aggs": { "industries": { "terms": { "field": "industry" } } },
"size": 25
}
}Strict- ja best-effort-tilat
Käytä tuotantomigraatiossa strict-tilaa. Se palauttaa valid:false eikä kohdekyselyä, jos semantiikkaa ei voida säilyttää. best_effort on eksplisiittinen tarkistustyönkulku: se voi pelkistää analysoidun Elastic match -haun sisältöehdoksi, merkitsee aina lossless:false ja liittää vakaan varoituskoodin. Älä suorita best-effort-tulosta tarkistamatta diagnostiikkaa.
Varmenna lähde- ja kohdetulokset
POST /v1/graph/query/translate/verify vertaa kohdetta oikeasta lähdejärjestelmästä kaapattuun source_result-tulokseen tai Source Execution Adapterin tulokseen. Vertailu kattaa identiteetit, järjestyksen, facetit ja sivutuksen, ja vastaus nimeää todellisen baselinen. Pelkkää translated_fixture_replay-tulosta ei väitetä tarjoajavastaavuudeksi.
Tallenna ja auditoi migraatioajot
POST /v1/graph/query/migration-runs tallentaa enintään 100 kyselyn erän tilan, yritykset, tapahtumahistorian, tuloksen ja virheet. Generoidut SDK:t sisältävät luonti-, listaus-, luku-, retry-, cancel- ja export-operaatiot. Synkroninen /migrations säilyy pienille yhteensopivuustyönkuluille.
Lue käännöstulos oikein
valid tarkoittaa, että kohdekysely tuotettiin ja läpäisi Graph Query -ontologiavalidoinnin. lossless kertoo, ettei varoitusta tai approksimaatiota tarvittu. mappings listaa kaikki uudelleennimetyt kentät. diagnostics sisältää vakaat severity-, code-, path-, message- ja suggestion-kentät. validation käyttää samaa kohdekielen sopimusta kuin /graph/query/validate.
{
"valid": true,
"lossless": true,
"query": "type:Organization location.country:"FI" employees>=100 sort:+employees facet:industry",
"mappings": [
{ "source": "nbEmployees", "target": "employees", "lossless": true }
],
"diagnostics": [],
"validation": { "valid": true, "errors": [] }
}Käytä kääntäjää SDK:sta
Kaikki generoidut SDK:t tarjoavat translateKnowledgeGraphQuery-metodin. Tallenna palautettu Graph Query sovellukseen vasta valid-, lossless- ja diagnostics-kenttien tarkistamisen jälkeen. Anna käännetty kysely explainKnowledgeGraphQuery-metodille ennen suoritusta.
const translated = await graphApi.translateKnowledgeGraphQuery({
graphQueryTranslationInput: {
dialect: 'diffbot-dql',
mode: 'strict',
query: 'type:Organization locations.country.name:"FI" nbEmployees>=100'
}
});
if (!translated.valid || !translated.lossless) {
throw new Error(JSON.stringify(translated.diagnostics));
}
await graphApi.explainKnowledgeGraphQuery({
graphQueryInput: { query: translated.query }
});Tuotantomigraation tarkistuslista
| Tarkistus | Vaatimus |
|---|---|
| Kenttäkartta | Jokainen tarjoajakenttä vastaa oikeaa tuotteen ontologiakenttää |
| Semantiikka | strict-käännös on häviötön tai jokainen best-effort-diagnostiikka on hyväksytty |
| Kardinaliteetti | Nested- ja moniarvoehdot säilyttävät saman alkion ehdot |
| Vastausmuoto | Projektio ja facetit palauttavat kuluttajien odottamat tiedot |
| Sivutus | Aloita ensimmäisestä sivusta ja siirry Graph Query -cursoreihin |
| Varmennus | Vertaa edustavia lähde- ja kohdetuloksia ennen liikenteen siirtoa |