Count API with multiple fields in Java

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html

The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass them
to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/2fb348d7-7e9c-4a59-812a-cd77df400e1d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Could you post how do you construct second query ??

On Monday, March 16, 2015 at 6:03:21 PM UTC, satheesh kumar wrote:

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html
The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass them
to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/8f35eff0-c9f4-4537-b9fa-3102549af1e7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Hey,

First and for most I am not 100% sure what do you try to achieve.

Could you explain what do you mean it does not work ??? Do you mean the
results is not as expected ??

If you looking for unique fields (I believe "user._id" is unique) I would
suggest to use filter instead of query. Filters performs quicker as they
omit score bit and which is more important are cache-able.

Here is example.

    ConstantScoreQueryBuilder query = QueryBuilders.constantScoreQuery(
            FilterBuilders
                    .andFilter(FilterBuilders.termFilter("hometeam", 

"Toronto"))
.add(FilterBuilders.termFilter("awayteam",
"Boston")));
CountResponse response =
client.prepareCount("sport").setQuery(query).get();

I hope it helps.

Kind Regards

Jarek

On Monday, March 16, 2015 at 6:03:21 PM UTC, satheesh kumar wrote:

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html
The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass them
to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/e8e4d10e-e6cb-43d4-874c-06c271402680%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Hi Jaroslaw,
This is the code for second query.
BoolQueryBuilder boolQuery = QueryBuilders
.boolQuery()
.must(QueryBuilders.matchQuery("user._id",
id).operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._parentId", parentId)
.operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._type",
"user").operator(
MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._deleted", false)
.operator(MatchQueryBuilder.Operator.AND));

On Monday, March 16, 2015 at 5:32:00 PM UTC-4, Jaroslaw Zawila wrote:

Could you post how do you construct second query ??

On Monday, March 16, 2015 at 6:03:21 PM UTC, satheesh kumar wrote:

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html
The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass
them to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/f12f4ddc-6445-4d7a-a1b1-f1a6bb0c8417%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

What result do you get ??

Could you explain what do you try to achieve please ??

On Monday, March 16, 2015 at 10:03:43 PM UTC, satheesh kumar wrote:

Hi Jaroslaw,
This is the code for second query.
BoolQueryBuilder boolQuery = QueryBuilders
.boolQuery()
.must(QueryBuilders.matchQuery("user._id",
id).operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._parentId", parentId)
.operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._type",
"user").operator(
MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._deleted", false)
.operator(MatchQueryBuilder.Operator.AND));

On Monday, March 16, 2015 at 5:32:00 PM UTC-4, Jaroslaw Zawila wrote:

Could you post how do you construct second query ??

On Monday, March 16, 2015 at 6:03:21 PM UTC, satheesh kumar wrote:

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html
The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass
them to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/dd927a9b-6e5a-4b12-9c50-3c28e8210e42%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

I"m trying to find whether a user document is present or not. Forget the
_parentId. Using the below three condition, I want to get a count =1.
("user._id", "5506dc497179fa070d31(ce37")
("user.type", "user")
("user._deleted", "false")

Using your sample code, I was able to achieve that. Thank you.

On Monday, March 16, 2015 at 6:26:52 PM UTC-4, Jaroslaw Zawila wrote:

What result do you get ??

Could you explain what do you try to achieve please ??

On Monday, March 16, 2015 at 10:03:43 PM UTC, satheesh kumar wrote:

Hi Jaroslaw,
This is the code for second query.
BoolQueryBuilder boolQuery = QueryBuilders
.boolQuery()
.must(QueryBuilders.matchQuery("user._id",
id).operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._parentId", parentId)
.operator(MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._type",
"user").operator(
MatchQueryBuilder.Operator.AND))
.must(QueryBuilders.matchQuery(
"user._deleted", false)
.operator(MatchQueryBuilder.Operator.AND));

On Monday, March 16, 2015 at 5:32:00 PM UTC-4, Jaroslaw Zawila wrote:

Could you post how do you construct second query ??

On Monday, March 16, 2015 at 6:03:21 PM UTC, satheesh kumar wrote:

Hi,

I'm trying to use Count API to see whether a search query returns data
count 1 or not.

http://www.elastic.co/guide/en/elasticsearch/client/java-api/current/count.html
The above example uses single (fieldname, fieldvalue) which works as
expected.

If I use TermQueryBuilder with single (fieldname, fieldvalue) like the
below code it works.
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user._id",
"5506dc497179fa070d31ce37");

CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(termQueryBuilder )
.execute()
.actionGet();

I've a condition with multiple fields and I expect to return count = 1
("user._id", "5506dc497179fa070d31(ce37")
("user.parentId", "5506dc497179fa070d31ce36")
("user.type", "user")
("user._deleted", "false")

When I construct a boolean query for the above fields and try to pass
them to the below code, it doesn't work.
CountResponse response =
elasticSearchConnectionFactory.getConnection().prepareCount("test")
.setQuery(boolQuery)
.execute()
.actionGet();

Can anyone suggest me how to achieve this?

Thanks,
Sat

--
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/3957b9cd-b59a-48d9-8ae1-092bff4e7e97%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.