Как я могу взять необработанную строку 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"
}
}
]
}
}
}