Я пытаюсь понять, почему поле с одним подчеркиванием mods_genre
будет вести себя иначе, чем поле с подчеркиванием 1+, например, mods__genre
при использовании клиента python asticsearch-dsl .
Использование версии ElasticSearch 5.5.1
и python 3.5
.
Ниже приведен код, с которым я работаю, чтобы выбрать все документы, для которых поле соответствует значению.
В этом примере выполняется поиск в индексе foo
с именами полей, которые имеют только одно подчеркивание, и возвращает ожидаемые результаты (как я уже подтвердил, это поле заполняется этим значением):
# query against index with single underscores in field name
query = Search(using=es_handle, index='foo')
query = query.filter(Q('term', **{'%s.keyword' % 'mods_genre' : 'biography'}))
query_results = query.execute()
In [16]: query_results.hits.total
Out[16]: 6
Однако, с очень похожим кодом, но запросом индекса с именами полей с несколькими подчеркиваниями в строке, bar
, я получаю ноль результатов:
# query against index with multiple underscores in field name
query = Search(using=es_handle, index='bar')
query = query.filter(Q('term', **{'%s.keyword' % 'mods__genre' : 'biography'}))
query_results = query.execute()
In [16]: query_results.hits.total
Out[16]: 0
Любое понимание, почему это может иметь место? Я понимаю, что имена полей, которые начинаются со знака подчеркивания, зарезервированы, но не встречались ни в одной документации, которая указывает на подчеркивания внутри поля - , в частности, несколько строк подряд - было бы проблематично.