Bhuneshwer
Bhuneshwer

Reputation: 587

Elastic Search - Query with dynamic object and wildcard

I have data in the following format:

{ "_id":1,
  "s_id":121211,
  "data_detail":{
      "name":"John",
      "phone_number":08089320xxx,
      "city":"ABC"
  }
}

I need to search data through elastic search which will query where s_id=? and any text which is available in data_detail object. Example s_id=121211 AND ABC. I need wildcard on data_detail object.

Keys for the data_detail object is not fixed.

Thanks in advance.

Upvotes: 0

Views: 459

Answers (2)

Bhuneshwer
Bhuneshwer

Reputation: 587

Solved this by using the following query:

{
  "query": {
    "bool": {
      "must": [
        {
           "query_string":{
              "fields":["data_detail.*"],
              "query": "*str*",
              "analyze_wildcard":true
            }
          },
        {
          "term": {
            "s_id": {
              "value": "121211"
            }
          }
        }
      ]
    }
  }
 }

Upvotes: 1

Animesh
Animesh

Reputation: 227

I would consider using a bool query with multi_match and term query like this. I haven't tested this, but something on these lines should work I guess.

GET test_index/_search 
{
  "query": {
    "nested": {
      "path": "data_detail",
      "query": {
        "bool": {
          "must": [
            {
              "multi_match": {
                "query": "ABC",
                "fields": [
                  "data_detail.*"
                ]
              }
            },
            {
              "term": {
                "s_id": {
                  "value": "121211"
                }
              }
            }
          ]
        }
      }
    }
  }
}

Upvotes: 1

Related Questions