Indizierung benutzerdefinierter JSON-Daten

Solr unterstützt bereits Aktualisierungsanfragen im JSON-Format. Aber es unterstützt nur das Solr-Json-Format und nicht Ihr eigenes benutzerdefiniertes JSON. Jetzt (mit SOLR-6304, ab Version 4.10) unterstützt Solr jedes JSON-Dokument und das Dokument kann im gewünschten Format in Solr indiziert werden.

Transformieren und Indizieren von benutzerdefinierten JSON-Daten

Das Ziel dieser Funktion ist es, den Benutzern zu helfen, JSON in ein gültiges Solr-Dokument zu indexieren, je nach den Wünschen des Benutzers. Sie ermöglicht es dem Benutzer, eine einzelne JSON-Datei in 1 oder mehrere Solr-Dokumente aufzuteilen. Das endgültige indizierte Dokument kann über das Mapping, das mit der Anfrage übergeben wird, gesteuert werden. Ein oder mehrere gültige JSON-Dokumente können mit den Konfigurationsparametern an den Pfad /update/json/docs gesendet werden.

Parameter zuordnen

 

  • split: Dieser Parameter ist erforderlich, wenn Sie die JSON-Eingabe transformieren möchten. Dies ist der Pfad, an dem das JSON geteilt werden muss. Wenn das gesamte JSON ein einziges Solr-Dokument bildet, muss der Pfad „/“ sein.
  • f: Dies ist ein mehrwertiger Zuordnungsparameter. Es muss mindestens eine Feldzuordnung angegeben werden. Das Format des Parameters ist {target-field-name}: {json-path}. Der ‚json-path‘ ist ein erforderlicher Teil . target-field-name ist der Name des Feldes im Solr-Eingabedokument. Er ist optional und wird automatisch aus der json-Eingabe abgeleitet.
  • echo: Dies dient der Fehlersuche. Setzen Sie es auf true , wenn Sie die Dokumente als Antwort zurückgeben möchten. Es wird nichts indiziert

Beispiel 1:

curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=first:/first'
'&f=last:/last'
'&f=grade:/grade'
'&f=subject:/exams/subject'
'&f=test:/exams/test'
'&f=marks:/exams/marks'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Dies indiziert die folgenden zwei Dokumente

   {
      "first":"John",
      "last":"Doe",
      "marks":90,
      "test":"term1",
      "subject":"Maths",
      "grade":8
      }
    {
      "first":"John",
      "last":"Doe",
      "marks":86,
      "test":"term1",
      "subject":"Biology",
      "grade":8
      }

Da die endgültigen Feldnamen mit den Feldern des Eingabedokuments übereinstimmen, kann die Anfrage wie folgt vereinfacht werden,

Beispiel 2 :

curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=/first'
'&f=/last'
'&f=/grade'
'&f=/exams/subject'
'&f=/exams/test'
'&f=/exams/marks'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Wildcards

Anstatt alle Feldnamen explizit anzugeben, ist es möglich, einen Platzhalter „*“ oder einen Platzhalter „**“ anzugeben, um Felder automatisch zuzuordnen. Die Einschränkung ist, dass Wildcards nur am Ende des json-Pfads verwendet werden können. Der geteilte Pfad kann keine Platzhalter verwenden. Im Folgenden finden Sie Beispiele für die Zuordnung von Platzhaltern zu Pfaden

  • f=/docs/*: bildet alle Felder unter docs und im Namen wie in json angegeben ab
  • f=/docs/**: mappt alle Felder unter docs und seine Kinder im Namen wie in json angegeben
  • f=searchField:/docs/*: ordnet alle Felder unter /docs einem einzigen Feld namens ’searchField‘ zu
  • f=searchField:/docs/** : ordnet alle Felder unter /docs und seinen Kindern dem searchField zu

Mit Wildcards können wir unser vorheriges Beispiel wie folgt vereinfachen

Beispiel 3:

'curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/exams'
'&f=/**'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

Es ist auch möglich, alle Werte an ein einzelnes Feld zu senden und eine Volltextsuche in diesem Feld durchzuführen. Dies ist eine gute Möglichkeit, JSON-Dokumente blind zu indizieren und abzufragen, ohne sich um Felder und Schemata kümmern zu müssen.

Beispiel 4 :

'curl 'http://localhost:8983/solr/collection1/update/json/docs'
'?split=/'
'&f=txt:/**'
 -H 'Content-type:application/json' -d '
{
  "first": "John",
  "last": "Doe",
  "grade": 8,
  "exams": [
      {
        "subject": "Maths",
        "test"   : "term1",
        "marks":90},
        {
         "subject": "Biology",
         "test"   : "term1",
         "marks":86}
      ]
}'

You Might Also Like

Die Rolle offener Standards bei MCP und ACP – Warum Interoperabilität wichtig ist

Offene Standards sorgen dafür, dass MCP (Model Context Protocol) und ACP (Agentic...

Read More

Wie das Agentic Commerce Protokoll den digitalen Handel verändern könnte

Die Einführung des Agentic Commerce Protocol (ACP) durch OpenAI und Stripe signalisiert...

Read More

Aufbau des Unternehmens von morgen: Warum das Agentic Commerce Protocol der erste Schritt zu einer agentenbasierten Ressourcenplanungsplattform ist

ACP ermöglicht es Nutzern des Large Language Model (LLM), Einkäufe direkt von...

Read More

Quick Links