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.