Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Missä pienryhmä sijaitsevat ekosysteemissä?

jne

 

Ryhmähaku (teksti: Ilkka Rauta)

Lyhyesti:

  • Nykyisellään käytetään lapsi-vanhempi-suhteita eri tyyppisten tietojen indeksointiin (opiskeluoikeus ja ryhmä(jäsenyys) ovat tässä eri tyyppejä), jolloin toisen tietuetyypin tietoja voidaan käyttää hakiessa mutta ei järjestellessä.
  • Elasticsearchin oma dokumentaatio ei listaa lapsi-vanhempi-suhteiden rajoituksia ihan valtavan hyvin, mutta esim. opiskeluoikeuksien järjestely ryhmien tietojen perusteella ei onnistu.
  • Syy miksi tällä vaihtoehdolla edettäisiin on se, että se tuli alunperin valittua - ja syy sille miksi se tuli valittua oli se että toteutus oli selkeämpi ja suoraviivaisempi saada aikaiseksi.
  • Mahdollisena vaihtoehtona on upottaa ryhmät (tai siis ryhmäjäsenyydet) opiskeluoikeustietueisiin, mutta tämän toteuttaminen vie tietty jonkin verran aikaa.

 

Pitkästi:

 

  • Nykyisellään opiskeluoikeudet indeksoidaan siten että yksi opiskeluoikeus menee indeksiin yhtenä dokumenttina. ("Dokumentti" on käytännössä elasticsearchin indeksoinnin perusyksikkö, joka voi sisältää useita tietokenttiä.)
  • Elasticsearch tunnistaa vain yhdenlaisen tavan liittää erillisiä dokumentteja yhteen, ja se on lapsi-vanhempi-suhde, eli yhdellä dokumentilla voi olla useita lapsidokumentteja. Tuota käyttäen opiskeluoikeuden ryhmäjäsenyydet indeksoidaan siten, että opiskeluoikeudella on lapsidokumentteinaan kopiot kustakin ryhmädokumentista joihin opiskeluoikeus kuuluu. Alla jonkinlainen kaavakuva tilanteesta, sulkeet merkitsevät dokumenttien rajoja:
    • [Opiskeluoikeus]
    • [Ryhmä 1]
    • [Ryhmä 2]
  • Opiskeluoikeuksia on mahdollista hakea lapsidokumenttien sisällön perusteella, mutta järjestely ei kuitenkaan onnistu lapsidokumenttien kenttiä käyttäen. Elasticsearch on tässä tarkoituksella rajoittunut, koska se nopeuttaa hakujen suorittamista. (En ole kuitenkaan mitenkään syvällisesti perillä siitä miten nimenomaisesti asiat konepellin alla tapahtuvat.)
  • Vaihtoehtona on upottaa ryhmätiedot indeksointivaiheessa opiskeluoikeusdokumenttiin, jolloin syntyy tällainen rakenne:
    • [Opiskeluoikeus
    • Ryhmä 1
    • Ryhmä 2]
  • Tällä kertaa kaikki tiedot löytyvät suoraan samasta dokumentista (sitä ainakin yritän tähdentää noiden sulkeiden käytöllä), ja järjestelykin onnistuu.
  • Lapsidokumenttien käyttäminen on toteutukselliseti jonkin verran siistimpi ja selkeämpi ratkaisu, joten se tuli alunperin valittua tavaksi hoitaa noita eri tyyppisten tietueiden välisiä suhteita. Tuohon jälkimmäiseenkin on mahdollista mennä, mutta vaatii lisää tekemistä.