Вы можете легко создать условные запросы с Elasticsearch. Но есть какая-то странная ситуация в вашем разделе данных.
details={ "name"="name1",
"address":"{
"city":"city1"
}"
}
Elasticsearh сохраняет ваши данные как объект json, но вы должны указать свои данные как json. В этом разделе есть объект, который вы пытаетесь отправить. Давайте рассмотрим:
Существует атрибут name для подробного объекта, это строка. А также есть атрибут адреса, и это тоже строка. Это должен быть объект, который должен включать атрибут города, если вы хотите достичь этого объекта через details.address.city
. Теперь мы пытаемся исправить:
{
"id":...,
...
"details": {
"name": "name1",
"address": {
"city": "city1"
}
}
}
В этом случае я удаляю двойные кавычки объекта детали. Теперь вы можете достигнуть атрибута города json как объекта json. Теперь мы создаем запрос, чтобы достигнуть города:
{
"query": {
"bool": {
"must": {
"term": {
"your-json-attribute": "???"
}
},
"should": [
{
"term": {
"your-json-attribute": "???"
}
},
{
"term": {
"your-json-attribute": "???"
}
}
]
}
}
}
Я использую term
запрос, но есть много других типов запросов. Вы можете проверить их на документацию. Но для And
и Or
вы можете использовать запрос bool
. Проверьте https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-bool-query.html
Привет, черная мама, спасибо за ваше предложение. Теперь я изменил свой вопрос, вы можете предложить для моего измененного запроса – venkat
, можете ли вы дать мне свое картографирование? какой запрос вы сейчас пытаетесь сделать? – blackmamba
вы даете мне идею на вопрос, который я задал, и еще одно - для cond2 мне нужно проверить значение города внутри моего вложенного объекта. – venkat