Рассмотрим ниже Стоп-поле - это поле метки времени.ElasticSearch 5. *, запрос для: поля не существует или если существует значение должно быть
я хочу, чтобы фильтровать данные с ниже условия:
- остановка поле не существует
- или остановить значение поля> = Теперь
Я знаю, я должен использовать must_not, но не может выяснить как.
Я хочу сделать некоторый подсчет по типу child и использовать этот счет для сортировки родительского элемента, а затем отфильтровать родителя с помощью поля остановки.
GET indexName/parentType/_search
{
"query": {
"bool": {
"must": [
{
"has_child": {
"type": "child-type",
"score_mode": "max",
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": {
"file": "score-analytics",
"lang": "expression"
}
}
}
]
}
}
}
},
{
"bool": {
"should": [
{
"range": {
"stop": {
"gte": "now"
}
}
}
]
}
}
]
}
}
}
Я получаю желаемый результат с фильтром ниже, но все еще ищу кое-что лучше. { "BOOL": { "должен": [{ "Диапазон": { "стоп": { "GTE": "теперь"}}}, { "BOOL": { "must_not": [{ "существует": { «field»: «stop»}}]}}]}} –
Запрос в вашем комментарии - именно тот, который вам нужен. Вам также нужно добавить '" minimum_should_match ": 1' – Val