Можете ли вы сослаться на другие запросы в Elasticsearch Percolator? - PullRequest
0 голосов
/ 26 сентября 2019

Могут ли запросы перколяторов ссылаться на другие сохраненные документы запросов в индексе перколяторов?Например, если у меня есть следующий логический запрос с _id=1, уже проиндексированным в перколяторе:

{
  "query": {
    "bool": {
      "must": [
        { "term": { "tag": "wow" } }
      ]
    }
  }
}

Могу ли я получить другой запрос, с индексированием _id=2 (обратите внимание, что я делаюдо ключа запроса _percolator_ref_id term):

{
  "query": {
    "bool": {
      "should": [
        { "term": { "tag": "elasticsearch" } },
        { "terms" : { "_percolator_ref_id": [1] } }
      ]
    }
  }
}

Если бы я перколировал следующий документ:

{ "tag": "wow" }

Я бы ожидал, что оба запроса _id=1 и _id=2 будут совпадать.Существуют ли некоторые функции, такие как _percolator_ref_id?

Спасибо!

Редактировать: Чтобы уточнить, я не знаю заранее, сколько ссылок на запрос появляется в данном запросе (например,запрос _id=2 может ссылаться на 10 других запросов).

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете сделать что-то вроде ниже

2 запроса зарегистрированы в индексе ниже

PUT myindex
{
    "mappings": {
        "properties": {
            "query1": {
                "type": "percolator"    
            },
            "query": {
                "type": "percolator"
            },
            "field": {
                "type": "text"
            }
        }
    }
}

Вы можете использовать bool и должны / должны комбинировать различные запросы

GET /myindex/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "percolate": {
            "field": "query",
            "document": {
              "field": "fox jumps over the lazy dog"
            }
          }
        },
        {
          "percolate": {
            "field": "query1",
            "document": {
              "field": "fox jumps over the lazy dog"
            }
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...