# Java multi search result repetition

**URL:** <https://discuss.elastic.co/t/java-multi-search-result-repetition/80456>\
**Category:** Elasticsearch\
**Created:** [March 29, 2017, 9:55am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456 "2017-03-29T09:55:32Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![GavinSong123](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@GavinSong123](https://discuss.elastic.co/u/GavinSong123)\
**Post date:** [March 29, 2017, 9:55am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/1 "2017-03-29T09:55:32Z")

</div>

When I use java multi search api 5.2.2, there are many duplicate data in the response. Is there any other api which can remove these duplicate data?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [March 29, 2017, 10:48am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/2 "2017-03-29T10:48:34Z")

</div>

No. I'd not use multi search in such a case

---

<div class="post-metadata">

**Author:** ![GavinSong123](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@GavinSong123](https://discuss.elastic.co/u/GavinSong123)\
**Post date:** [March 29, 2017, 10:58am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/3 "2017-03-29T10:58:22Z")

</div>

Maybe I didn't describe clearly. For example:

```auto
qb1 = QueryBuilders.queryStringQuery("key");
SearchRequestBuilder srb1 = client.prepareSearch()
                    .setQuery(qb1).setIndices(indexName)
                    .setTypes(type).setSize(size);
qb2 = QueryBuilders.matchQuery("resourceType", "user");
SearchRequestBuilder srb2 = client.prepareSearch()
                    .setQuery(qb2).setIndices(indexName)
                    .setTypes(type).setSize(size);
MultiSearchResponse sr = client.prepareMultiSearch().add(srb1).add(srb2).get();

```

In fact, result has one hit, but there are two in the response.

---

<div class="post-metadata">

**Author:** ![Itamar\_Syn\_Hershko](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itamar_syn_hershko/32/725_2.png) [@Itamar\_Syn\_Hershko](https://discuss.elastic.co/u/Itamar_Syn_Hershko)\
**Post date:** [March 29, 2017, 11:07am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/4 "2017-03-29T11:07:52Z")

</div>

Why won't you use a Boolean Query here instead then?

---

<div class="post-metadata">

**Author:** ![GavinSong123](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@GavinSong123](https://discuss.elastic.co/u/GavinSong123)\
**Post date:** [March 30, 2017, 2:54am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/5 "2017-03-30T02:54:44Z")

</div>

Is there any example or docs about boolean query?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [March 30, 2017, 4:45am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/6 "2017-03-30T04:45:54Z")

</div>

Yes:

[https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html#java-query-dsl-bool-query](https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html#java-query-dsl-bool-query)

---

<div class="post-metadata">

**Author:** ![GavinSong123](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@GavinSong123](https://discuss.elastic.co/u/GavinSong123)\
**Post date:** [March 30, 2017, 5:44am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/7 "2017-03-30T05:44:33Z")

</div>

Can this method add query dynamically? Such as:

```java
if(!key.equals("")){
    qb1 = QueryBuilders.queryStringQuery(key);
}
QueryBuilder qb = QueryBuilders.boolQuery();
qb.must(qb1);

```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [March 30, 2017, 5:59am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/8 "2017-03-30T05:59:20Z")

</div>

I'd write:

```
BoolQueryBuilder qb = QueryBuilders.boolQuery();

if (!key.equals("")) {
    qb.must(QueryBuilders.queryStringQuery(key));
}
```

---

<div class="post-metadata">

**Author:** ![GavinSong123](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@GavinSong123](https://discuss.elastic.co/u/GavinSong123)\
**Post date:** [March 30, 2017, 6:07am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/9 "2017-03-30T06:07:38Z")

</div>

It will report error that can't resolve method must.😐

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [March 30, 2017, 6:36am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/10 "2017-03-30T06:36:16Z")

</div>

I updated my answer

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 27, 2017, 6:36am UTC](https://discuss.elastic.co/t/java-multi-search-result-repetition/80456/11 "2017-04-27T06:36:49Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
