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