Comment mettre à jour plusieurs documents dans Solr avec JSON?
Comment mettre à jour plusieurs documents dans Solr 4.5.1 avec JSON? J'ai essayé ceci mais ça ne fonctionne pas:
POST /solr/mycore/update/json
:
{
"commit": {},
"add": {
"overwrite": true,
"doc": [{
"thumbnail": "/images/404.png",
"url": "/404.html?1",
"id": "demo:/404.html?1",
"channel": "demo",
"display_name": "One entry",
"description": "One entry is not enough."
}, {
"thumbnail": "/images/404.png",
"url": "/404.html?2",
"id": "demo:/404.html?2",
"channel": "demo",
"display_name": "Another entry",
"description": "Another entry is required."
}
]
}
}
OriginalL'auteur burnersk | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
Solr s'attend à une "ajouter"-clé dans le JSON-structure pour chaque document (ce qui peut paraître bizarre, si vous pensez à ce sujet le sens original de la clé dans l'objet), car il correspond directement au format XML lors de l'indexation et de cette façon vous pouvez avoir des métadonnées pour chaque document par elle-même.
.. fonctionne. Je pense que permettant un tableau comme l'élément référencé par "ajouter" aurait plus de sens, mais je n'ai pas creusé plus loin dans la source ou de connaître le raisonnement derrière cela.
Il passe quelques validateurs en ligne, mais freeformatter.com/json-validator.html explique que "Le JSON entrée n'est PAS valide selon la RFC 4627 JSON (spécification). Inattendu double de la clé:ajouter à la position 136."
J'obtiens une erreur: "Error parsing JSON valeur de champ. Inattendu OBJECT_START à [50], champ=ajouter"
S'il vous plaît ajouter une nouvelle question pour tout les nouveaux enjeux de cette façon, il sera beaucoup plus visible au lieu de juste d'apparaître dans mon commentaire d'alimentation.
OriginalL'auteur MatsLindh
Je comprends que (au moins) à partir des versions 4.0 et plus de solr, cela a été corrigé. Regardez http://wiki.apache.org/solr/UpdateJSON.
. /exampledocs/livres.json, il est un exemple d'un fichier json avec plusieurs documents.
Tandis que @fiskfisk réponse est encore JSON valide, il n'est pas facile d'être sérialisable à partir d'une structure de données. Celui-ci est.
OriginalL'auteur elachell
elachell est vrai que le format de tableau de travailler si vous êtes juste d'ajouter des documents avec les paramètres par défaut. Malheureusement, cela ne fonctionnera pas si, par exemple, vous devez ajouter un coup de pouce à certains des documents ou de modifier le paramètre de remplacement. Ensuite, vous devez utiliser la totalité de la structure de l'objet avec une touche "ajouter" pour chacun d'eux, comme ils l'ont souligné, rend cela très ennuyeux pour essayer de sérialiser à partir de la plupart des langues qui ne permettent pas la même touche plus d'une fois dans un objet:
}
OriginalL'auteur Mary Jo Sminkey
Une autre option, si vous êtes sur Solr 4.10 ou plus tard, est d'utiliser un custom structure JSON et dire Solr comment indexer (pas sûr de la façon d'ajouter renforce avec cette méthode, mais c'est une bonne option si vous disposez déjà de données struct en JSON et ne veulent pas se convertir à Solr du format). Voici la Solr documentation sur cette option:
https://cwiki.apache.org/confluence/display/solr/Uploading+Data+with+Index+Handlers#UploadingDatawithIndexHandlers-TransformingandIndexingCustomJSOn
OriginalL'auteur Mary Jo Sminkey