Как преобразовать запрос Kibana в запрос `asticsearch_dsl` - PullRequest
0 голосов
/ 24 января 2020

У меня есть запрос

GET index/_search

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "key1": "value"
          }
        },
        {
          "wildcard": {
            "key2": "*match*"
          }
        }
      ]
    }
  }
}

Я хочу сделать тот же вызов с пакетом elasticsearch_dsl, который я пробовал с

s = Search(index=index).query({
    "bool": {
      "should": [
        {
          "match": {
            "key1": "value"
          }
        },
        {
          "wildcard": {
            "key2": "*match*"
          }
        }
      ]
    }
  })
s.using(self.client).scan()

Но результаты не совпадают, я что-то упускаю здесь

Есть ли способ представить мой запрос с помощью elasticsearch_dsl, пробовал это, без результатов

s = Search(index=index).query('wildcard', key2='*match*').query('match', key1=value)
s.using(self.client).scan()

Ответы [ 2 ]

0 голосов
/ 31 января 2020

Этот запрос работал для меня

s = Search(index=index).query('match', key1=value)
                       .query('wildcard', key2='*match*')
                       .source(fields)

также, если ключ имеет _ подобно key_1 elasti c поиск ведет себя по-разному, и результаты запроса соответствуют даже тем, которые не соответствуют вашему запросу. Поэтому постарайтесь выбрать свои key, которые не имеют подчеркивания.

0 голосов
/ 24 января 2020

мне кажется, что вы забыли звезды в запросе.

s = Search(index=index).query('wildcard', key='*match*').query('match', key=value)
...