Я использую плагин Grails для работы с ElasticSearch через MySQL. У меня есть столбец домена отображается в моем классе домена следующим образом:Как использовать must_not с пустым атрибутом JSON с ElasticSearch + Grails?
String updateHistoryJSON
(...)
static mapping = {
updateHistoryJSON type: 'text', column: 'update_history'
}
В MySQL это в основном отображает в колонку TEXT, целью которой является для хранения контента в формате JSON.
Итак, в обоих индексах DB и ElasticSearch у меня есть 2 экземпляра: - экземпляр 1 имеет updateHistoryJSON = '{"zip": null, "street": null, "name": null, "categories": [ ], "город": нулевая}» - пример 2 имеет updateHistoryJSON = '{}'
Теперь, что мне нужно, это запрос ElasticSearch, который возвращает только экземпляр 2.
Я делал замыкание например, с использованием Groovy DSL:
{
bool {
must_not = term(updateHistoryJSON: "{}")
minimum_should_match = 1
}
}
И ElasticSearch кажется, игнорирует его, он продолжает возвращать оба экземпляра.
С другой стороны, если я использую фильтр типа "missing": {"field": "updateHistoryJSON"}, он не возвращает никаких документов. То же самое касается «существует»: {«field»: «updateHistoryJSON»}.
Любое представление о том, что я делаю неправильно здесь?