Как искать только в необработанном запросе JSON с Elastic Java API 6.5.1? - PullRequest
0 голосов
/ 28 марта 2019

Как я могу взять необработанную строку JSON и запрос через API Java? Должно работать для любого сложного запроса, который Curl принимает в Elastic.

Например:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "name": "<name>"
          }
        },
        {
          "match": {
            "address": {
              "query": "<address>",
              "fuzziness": 1,
              "prefix_length": 1,
              "operator": "or",
              "minimum_should_match": "80%"
            }
          }
        },
        {
          "match_phrase": {
            "city_nm": "<city_nm>"
          }
        },
        {
          "term": {
            "state_province_cd": "<state_province_cd>"
          }
        }
      ]
    }
  }
}

Я пытался Query Builders' simpleQueryStringQuery метод для достижения этой цели, но он создает запрос, который не дает правильный результат.

Например, чтобы искать запись, используя только имя, это запрос, который генерирует simpleQueryStringQuery, но вместо того, чтобы возвращать только одну запись, он возвращает несколько записей.

{
  "query": {
    "simple_query_string": {
      "query": """{"query":{"bool":{"must":[{"match_phrase":{"name":"Neeraj"}}]}}}"""
    }
  }
}

тогда как если я выполню такой же запрос, как этот, на моей консоли Kibana, который вернёт правильное количество результатов.

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "name": "Jaas"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...