Как можно искать несколько раз в Elasticsearch для Python? - PullRequest
0 голосов
/ 11 октября 2019
body = 
{
  "query":{
    "bool":{
      "must":{
        'terms':{
           "reason":["A","B"] 
        }
      }
    }
  }
}

Причина находится в _source. Я хочу найти причину A или причину B с учетом index = 'test_index' от python. Но этот код не может найти. Результат пуст.

Я использую это "/ _search? Q = причина: A | Bsize = 50 & from = 5000", результат правильный. Я хочу получить тот же результат в Python. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Речь не идет о Python, когда вы используете тело в качестве слова вашего запроса.

Условия Запрос: https://www.elastic.co/guide/en/elasticsearch/reference/7.4/query-dsl-terms-query.html

ES Client для Python: https://elasticsearch -py.readthedocs.io/en/master/

Должно работать:

body = {"query":{"bool":{"must":{'terms':{"reason":["A","B"]}}}}}
res = es.search(index="test-index", body=body)

Проверка:

res['hits']['hits']
0 голосов
/ 11 октября 2019

Попробуй это.

test_index/_search
{
  "query": {
    "bool" :{
      "should" : [
        { "term" : { "reason" : "A" } },
        { "term" : { "reason" : "B" } }
      ]
    }
  }
 }

must - это строгий поиск, аналогичный AND в запросе sql. should аналогично OR в sql

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