Эластичный поисковый фильтр по результатам агрегирования терминов - PullRequest
0 голосов
/ 20 апреля 2019

Применить запрос совпадения с префиксом фразы к результату агрегирования терминов в Elastic Search.

У меня есть запрос условий, и результат выглядит примерно так:

"ведра": [ { «ключ»: «ключ», "считать": 20 }, { "Дверной замок", "считать": 30 } ]

Теперь требуется отфильтровать те сегменты, чей ключ начинается с определенного префикса, поэтому что-то похожее на префикс соответствия фразы. Например, если вход для совпадения с запросом префикса фразы - «LOC», то должен быть возвращен только один сегмент (второй). Так что это эффективный фильтр для агрегирования терминов. Спасибо за ваши мысли.

1 Ответ

1 голос
/ 20 апреля 2019

Вы можете использовать параметр include при агрегировании терминов, чтобы отфильтровать значения на основе регулярных выражений.

Как-то так должно работать:

GET stackoverflow/_search
{
  "_source": false,
  "aggs": {
    "groups": {
      "terms": {
        "field": "text.keyword",
        "include": "LOC.*"
      }
    }
  }
}

Пример: Допустим, у вас есть три разных документа с тремя разными терминами ( LOCK , KEY & LOL ) в индексе , Так что если вы выполняете следующий запрос:

GET stackoverflow/_search
{
  "_source": false,
  "aggs": {
    "groups": {
      "terms": {
        "field": "text.keyword",
        "include": "L.*"
      }
    }
  }
}

Вы получите следующие ведра:

"buckets" : [
    {
      "key" : "LOCK",
      "doc_count" : 1
    },
    {
      "key" : "LOL",
      "doc_count" : 1
    }
]

Надеюсь, это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...