JacksonMapper et Term

49 views
Skip to first unread message

Anthonny Querouil

unread,
May 20, 2013, 9:09:12 AM5/20/13
to elastics...@googlegroups.com
Bonjour,

Je travaille actuellement sur un projet combinant les éléments suivants :
- Play! 2.0
- Elasticsearch 0.20.6
cleverage / play2-elasticsearch

Je fais une recherche qui me renvoie des facets (exemple de log :

"facets" : {
    "fonctionsF" : {
      "_type" : "terms",
      "missing" : 0,
      "total" : 4802,
      "other" : 2152,
      "terms" : [ {
        "term" : "forums",
        "count" : 446
      }, {

Mon problème se situe au moment pour je veux transformer l'objet java récupéré, en flux Json :

     IndexQuery<AnotherIndex> queryAll = AnotherIndex.find.query();

     // Facet fonctions      
     queryAll.addFacet(FacetBuilders.termsFacet("fonctionsF").field("fonctions"));       
     IndexResults<AnotherIndex> allAndFacet = AnotherIndex.find.search(queryAll);
      return ok(Json.toJson(allAndFacet));

J'obtiens la stack suivante :

Caused by: org.codehaus.jackson.map.JsonMappingException: For input string: "unForum" (through reference chain: com.github.cleverage.elasticsearch.IndexResults["facets"]->org.elasticsearch.search.facet.InternalFacets["facets"]->java.util.HashMap["risquesF"]->org.elasticsearch.search.facet.terms.strings.InternalStringTermsFacet["entries"]->java.util.ArrayList[0]->org.elasticsearch.search.facet.terms.strings.StringEntry["termAsNumber"])
at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:218) ~[jackson-mapper-asl.jar:1.9.10]
at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:183) ~[jackson-mapper-asl.jar:1.9.10]
at org.codehaus.jackson.map.ser.std.SerializerBase.wrapAndThrow(SerializerBase.java:140) ~[jackson-mapper-asl.jar:1.9.10]
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:158) ~[jackson-mapper-asl.jar:1.9.10]
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) ~[jackson-mapper-asl.jar:1.9.10]
at org.codehaus.jackson.map.ser.std.StdContainerSerializers$IndexedListSerializer.serializeContents(StdContainerSerializers.java:122) ~[jackson-mapper-asl.jar:1.9.10]
Caused by: java.lang.NumberFormatException: For input string: "unForum"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1242) ~[na:1.6.0_27]
at java.lang.Double.parseDouble(Double.java:527) ~[na:1.6.0_27]
at org.elasticsearch.search.facet.terms.strings.InternalStringTermsFacet$StringEntry.termAsNumber(InternalStringTermsFacet.java:84) ~[elasticsearch-0.20.5.jar:na]
at org.elasticsearch.search.facet.terms.strings.InternalStringTermsFacet$StringEntry.getTermAsNumber(InternalStringTermsFacet.java:89) ~[elasticsearch-0.20.5.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.6.0_27]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.6.0_27]

Jackson traite tout les getters et donc le getTermAsNumber.

Est-ce qu'il ne serait pas intéressant d'ajouter une annotation @Transient sur ce genre de fonction (qui sont plus des "tools" que de véritables accesseurs) ?
Je souhaiterais avoir votre avis avant d'ouvrir un éventuellement pullrequest.

Nicolas BOIRE

unread,
May 21, 2013, 3:21:49 AM5/21/13
to elastics...@googlegroups.com
Bonjour Anthonny,

Merci pour ce retour.
Nous avons effectivement noté des soucis lors de la serialization en Json des résultats via Jackson.
D'une manière plus générale, il serait intéressant de pouvoir récupérer les résultats de recherche :
- soit en objet Java 
- soit directement en Json pour pouvoir l'utiliser dans les templates.

C'est pour cela que nous venons de rajouter une méthode permettant de retourner directement le résultat de la recherche au format JSON.

String json = IndexTest.find.searchAsJson(query);
return ok(json).as("application/json");

Cette nouvelle fonctionnalité est dispo dans la version "0.5.6-SNAPSHOT" du module.
Est-ce que cela te convient ?

N'hésitez pas à créer des issues sur github pour les bugs / suggestions sur ce module : https://github.com/cleverage/play2-elasticsearch/issues/new

++
Nicolas,

Anthonny Querouil

unread,
May 21, 2013, 12:59:03 PM5/21/13
to elastics...@googlegroups.com
Bonjour Nicolas,

Merci pour ce retour rapide.
Cette nouvelle fonctionnalité répondra parfaitement à mon besoin.
Je ne pourrais pas faire de test avant vendredi, je ferais un retour ici.

++
Anthonny.

Anthonny Querouil

unread,
May 24, 2013, 3:40:22 AM5/24/13
to elastics...@googlegroups.com
Testé, validé, approuvé :)
Merci encore.

Nicolas BOIRE

unread,
May 24, 2013, 4:16:01 AM5/24/13
to elastics...@googlegroups.com
De rien ;)
Reply all
Reply to author
Forward
0 new messages