Как я могу исключить результаты из поискового запроса, который имеет конкретное значение запроса? - PullRequest
0 голосов
/ 17 марта 2019

Я хочу посчитать количество обращений к документу с определенным значением поля за день. Я делаю это, извлекая индекс для каждого дня, а затем выполняя поиск по каждому индексу.

Поисковый запрос:

"query": {
  "bool": {
    "should": {
      "exists": {
        "field": "field_to_find"
      },
    },
  }
}

Структура результата документа:

{  
  ...
  "_shards":{  
    ...
  },
  "hits": {  
    "total": 6,
    "hits": [{  
      ...
      "_source": {  
        "request": "/data/000000/comment",
        "field_to_find": 000000,
        ...
      }
    }, {  
      ...
      "_source": {  
        "request": "/data/111111",
        "field_to_find": 111111,
        ...
      }
    }]
  }
}

Я хочу учитывать только те обращения, которые содержат структуру запроса /dataset/<data_id>. Мне нужно исключить все остальные значения в подсчете.

Каков наилучший и наиболее эффективный способ сделать это?

1 Ответ

1 голос
/ 18 марта 2019

Вы можете использовать Regexp Query

{
  "query": {
    "bool": {
      "must": [{
        "exists": {
          "field": "field_to_find"
        },
        "regexp": {
          "request": "^/data/[0-9]+$"
        }
      }]
    }
  }
}
...