# Unable to escape special character using Java REST API

**URL:** <https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [February 1, 2023, 4:09pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456 "2023-02-01T16:09:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Avi\_Buk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avi_buk/32/116294_2.png) [@Avi\_Buk](https://discuss.elastic.co/u/Avi_Buk)\
**Post date:** [February 1, 2023, 4:09pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456/1 "2023-02-01T16:09:46Z")

</div>

Hi,

I'm using query\_string which is Lucene-based, and when I'm trying to send a query with "role" field contains the string "INFRA-Server", it cannot find any results because of the **"-"** sign.  
I tried to escape it, but it doesn't work..

"role" field is of type "text", can anyone please help me solve this issue?

```auto
 queryString = "( hostname:\"OR\" AND role:*INFRA-Server*) AND MachineTime:[1674746651 TO 1675265051]"

QueryBuilder query = QueryBuilders
            .queryStringQuery(queryString);

```

---

<div class="post-metadata">

**Author:** ![RabBit\_BR](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rabbit_br/32/82261_2.png) [@RabBit\_BR](https://discuss.elastic.co/u/RabBit_BR)\
**Post date:** [February 1, 2023, 5:21pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456/2 "2023-02-01T17:21:05Z")

</div>

Hi @Avi_Buk

you tried to run like this: `role:INFRA-Server` ?

If I had a sample document I can try to simulate it too.

---

<div class="post-metadata">

**Author:** ![Avi\_Buk](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/avi_buk/32/116294_2.png) [@Avi\_Buk](https://discuss.elastic.co/u/Avi_Buk)\
**Post date:** [February 1, 2023, 6:42pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456/3 "2023-02-01T18:42:25Z")

</div>

Hi, thank you,

I would like to perform a **"contain"** query, means, looking for all the documents contains the role "INFRA-Server", example of a single document :

```auto
{
            "role": "INFRA-Server.zse",
            "hostname": "OR",
            "region": "EMEA",
            "ipaddr": "10.25.83.12"
}

```

---

<div class="post-metadata">

**Author:** ![RabBit\_BR](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rabbit_br/32/82261_2.png) [@RabBit\_BR](https://discuss.elastic.co/u/RabBit_BR)\
**Post date:** [February 1, 2023, 7:33pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456/4 "2023-02-01T19:33:54Z")

</div>

I tried:

```auto
POST idx_test/_doc
{
  "role": "INFRA-Server.zse",
  "hostname": "OR",
  "region": "EMEA",
  "ipaddr": "10.25.83.12"
}

POST idx_test/_doc
{
  "role": "INFRA-Server.tre",
  "hostname": "OR",
  "region": "EMEA",
  "ipaddr": "10.25.83.12"
}

GET idx_test/_search
{
  "query": {
    "query_string": {
      "query": "(hostname:\"OR\" AND role:INFRA-Server)"
    }
  }
}

```

Java Code

````auto
    var queryString = QueryStringQuery.of(qs -> qs.query("(hostname:\"OR\" AND role:INFRA-Server)"));
    var searchRequest = SearchRequest.of(sr -> sr.query(queryString._toQuery()).index("idx_test"));

    var response = client.search(searchRequest, sClass.class);```
````

---

<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 1, 2023, 7:34pm UTC](https://discuss.elastic.co/t/unable-to-escape-special-character-using-java-rest-api/324456/5 "2023-03-01T19:34:14Z")

</div>

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