Count not working for Java API, works for REST


(Matt Chambers) #1

Kind of a strange situation.

I've tried 1.0.3, 1.1.2, and 1.2.1, all have the same problem (upgraded
from .90.13)

My query is simple, looks like this:

{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : {
"filters" : [ {
"terms" : {
"tags" : [ "blah" ]
}
} ]
}
}
}

CountRequestBuilder builder = client.prepareCount(indexName)
.setTypes("product")
.setQuery(getQuery(req));

return builder.get().getCount();

I get a count of 0 with the Java API. If I take that request and hit the
server with curl I get the real count.

Any help would be appreciated.

-Matt

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/706501e2-0413-49be-a7b3-7a1795dfdd69%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Brian Yoder) #2

Perhaps you need to insert the execute().actionGet() method calls, as below?

CountRequestBuilder builder = client.prepareCount(indexName)
.setTypes("product")
.setQuery(getQuery(req));

builder.execute().actionGet()

return builder.get().getCount();

I don't use Count, but I have used Query and Update and Delete and they all
work similarly in this regard. Just a guess.

Brian

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/efaf68b8-90f1-47c7-87c1-d124ae7c4bce%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Matt Chambers) #3

I think get() is just a shortcut for execute().actionGet()

Anyway, problem solved, it was a problem with my mapping not applying
correctly with the Java API. Looking into that now.

I'm doing this at the start of the tests to apply the mapping, but its not
being applied.

client.admin().indices().prepareCreate(indexName).addMapping("product",
mappingJson).execute().actionGet();
-Matt

On Tuesday, June 24, 2014 6:35:32 AM UTC+12, Brian wrote:

Perhaps you need to insert the execute().actionGet() method calls, as
below?

CountRequestBuilder builder = client.prepareCount(indexName)
.setTypes("product")
.setQuery(getQuery(req));

builder.execute().actionGet()

return builder.get().getCount();

I don't use Count, but I have used Query and Update and Delete and they
all work similarly in this regard. Just a guess.

Brian

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/5c121d44-81df-4b1f-bdeb-a2fe6ab9ed5c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Matt Chambers) #4

Fixed that one by parsing the json as Map<String,Object> rather than a
string.

On Tuesday, June 24, 2014 7:41:42 AM UTC+12, Matt Chambers wrote:

I think get() is just a shortcut for execute().actionGet()

Anyway, problem solved, it was a problem with my mapping not applying
correctly with the Java API. Looking into that now.

I'm doing this at the start of the tests to apply the mapping, but its not
being applied.

client.admin().indices().prepareCreate(indexName).addMapping("product",
mappingJson).execute().actionGet();
-Matt

On Tuesday, June 24, 2014 6:35:32 AM UTC+12, Brian wrote:

Perhaps you need to insert the execute().actionGet() method calls, as
below?

CountRequestBuilder builder = client.prepareCount(indexName)
.setTypes("product")
.setQuery(getQuery(req));

builder.execute().actionGet()

return builder.get().getCount();

I don't use Count, but I have used Query and Update and Delete and they
all work similarly in this regard. Just a guess.

Brian

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/95d8d82e-e154-4483-b005-570f3166f362%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(Hubo3085632) #5

how does your resolve the problem?
i met the same matter with you,this is my code
CountResponse cResponse = Es_Utils.getClient().prepareCount(indexName)
.setTypes(mappingName)
.execute()
.actionGet();
long count = cResponse.getCount();


(system) #6