# Troublewriting query in ES using JAVA API

**URL:** <https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755>\
**Category:** Elasticsearch\
**Created:** [February 7, 2018, 6:16am UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755 "2018-02-07T06:16:30Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![joker](https://avatars.discourse-cdn.com/v4/letter/j/5f9b8f/32.png) [@joker](https://discuss.elastic.co/u/joker)\
**Post date:** [February 7, 2018, 6:16am UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755/1 "2018-02-07T06:16:31Z")

</div>

I have tried a lot and searched stackoverflow about building queries in JAVA for ES, I think I have basic understanding but still not able to write queries properly. Can someone please explain in detail with several examples, it would be really really awesome guys.  
And if you haven't check Falcon Heavy launch video, I think you should do that first 😛

My Query string -\>

```auto
GET instagram_2018/_search
{
  "_source": [
    "message",
    "created_time"
  ],
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "object_type": "comment"
          }
        },
        {
          "wildcard": {
            "profile_name": "Some name"
          }
        },
        {
          "wildcard": {
            "post_id": "*_123456789"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
} 

```

Thanks in advance!

---

<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:** [February 7, 2018, 4:54pm UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755/2 "2018-02-07T16:54:25Z")

</div>

Something like:

```auto
client.search(
	new SearchRequest("instagram_2018").source(
			new SearchSourceBuilder()
			.query(QueryBuilders.boolQuery()
				.must(QueryBuilders.matchQuery("object_type", "comment"))
				.must(QueryBuilders.wildcardQuery("profile_name", "Some name"))
				.must(QueryBuilders.wildcardQuery("post_id", "*_123456789"))
			)
			.sort("created_time", SortOrder.DESC)
			.fetchSource(new String[]{"message", "created_time"}, null)
	)
);

```

BTW this is a VERY bad idea to do this: `QueryBuilders.wildcardQuery("post_id", "*_123456789")`

---

<div class="post-metadata">

**Author:** ![joker](https://avatars.discourse-cdn.com/v4/letter/j/5f9b8f/32.png) [@joker](https://discuss.elastic.co/u/joker)\
**Post date:** [February 7, 2018, 5:06pm UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755/3 "2018-02-07T17:06:47Z")

</div>

thanks! btw may i know why it's bad idea to use `wildcardQuery` ?

---

<div class="post-metadata">

**Author:** ![val](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/val/32/138203_2.png) [@val](https://discuss.elastic.co/u/val)\
**Post date:** [February 7, 2018, 5:22pm UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755/4 "2018-02-07T17:22:32Z")

</div>

[Wilcard queries can be very slow](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html), as they need to iterate over many terms. In order to prevent that, a wildcard term should not start with one of the wildcards `*` or `?`

Additional useful info can be found in the official guide: [https://www.elastic.co/guide/en/elasticsearch/guide/current/\_wildcard\_and\_regexp\_queries.html](https://www.elastic.co/guide/en/elasticsearch/guide/current/_wildcard_and_regexp_queries.html)

---

<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:** [March 7, 2018, 5:23pm UTC](https://discuss.elastic.co/t/troublewriting-query-in-es-using-java-api/118755/5 "2018-03-07T17:23:11Z")

</div>

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