如何使用Elastic Java API 6.5.1仅使用原始查询JSON进行搜索?

时间:2019-03-28 08:13:30

标签: elasticsearch elasticsearch-5

如何获取原始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"
          }
        }
      ]
    }
  }
}

0 个答案:

没有答案