Описание:
В приложении есть возможность фильтровать дату по значениям ключей. Например, если нужно отобразить все пункты, в которых "Result: success";
Для одного из ключей, значение всегда имеет вид объекта JS, с кавычками и т.д. Это приводит к тому, что elasticsearch не может правильно распарсить JSON. Например, мы ищем все пункты в которых свойство changeSet = {'filteringRuleName':null}
Вопрос: как работать с таким запросом, чтобы еластик мог его нормально обрабатывать?
Фрагмент рабочего запроса:
В данном случае ищу дату у которой свойство action = EDIT;
"query_string": { "query": "action:EDIT"}
Фрагмент нерабочего запроса пример:
В данном случае ищу дату у которой свойство changeSet = {'filteringRuleName':null};
"query_string": { "query": "changeSet:{'filteringRuleName':null}"}
Код возвращаемой ошибки:
"reason": {
"type": "query_shard_exception",
"reason": "Failed to parse query [changeSet:{'filteringRuleName':null}]",
"index_uuid": "h0xXZj0eQGWrSIYTcfv5nQ",
"index": "cxc-audit-22-30-2021.02.05",
"caused_by": {
"type": "parse_exception",
"reason": "parse_exception: Cannot parse 'changeSet:{'filteringRuleName':null}': Encountered \" \"}\" \"} \"\" at line 1, column 35.\nWas expecting:\n \"TO\" ...\n ",
"caused_by": {
"type": "parse_exception",
"reason": "parse_exception: Encountered \" \"}\" \"} \"\" at line 1, column 35.\nWas expecting:\n \"TO\" ...\n "
}
}
}
___________________________________________
___________________________________________
___________________________________________
___________________________________________
___________________________________________
Полный рабочий запрос:
{
"size": 10,
"from": 0,
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"from": 1612523952692,
"to": 1612545552692,
"format": "epoch_millis"
}
}
},
{
"query_string": {
"query": "action:EDIT"
}
}
]
}
},
{
"bool": {
"must": [
{
"range": {
"@timestamp": {
"from": 1612523952692,
"to": 1612545552693,
"format": "epoch_millis"
}
}
},
{
"query_string": {
"query": "action:EDIT"
}
}
]
}
}
]
}
}
}
Полный нерабочий запрос:
{
"size": 10,
"from": 0,
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"query": {
"bool": {
"must": [
{
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"from": 1612520405515,
"to": 1612542005515,
"format": "epoch_millis"
}
}
},
{
"query_string": {
"query": "changeSet:{'filteringRuleName':null}"
}
}
]
}
},
{
"bool": {
"must": [
{
"range": {
"@timestamp": {
"from": 1612520405515,
"to": 1612542005515,
"format": "epoch_millis"
}
}
},
{
"query_string": {
"query": "changeSet:{'filteringRuleName':null}"
}
}
]
}
}
]
}
}
}