首页 > 解决方案 > 如何使用 Elastic Java API 6.5.1 仅使用原始查询 JSON 进行搜索?

问题描述

如何获取原始 JSON 字符串并通过 Java API 进行查询?它应该适用于 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"
          }
        }
      ]
    }
  }
}

标签: elasticsearchelasticsearch-5

解决方案


推荐阅读