У меня есть поле slug, которое я хочу использовать для идентификации объекта, который будет использоваться как ссылка вместо поля "_id".Но вместо того, чтобы использовать его в качестве ссылки, doc
, кажется, использует его как запрос для сопоставления.Поскольку slug
является уникальным полем с простым анализатором, оно просто возвращает ровно один результат, подобный следующему.Насколько я знаю, нет никакого способа использовать настраиваемое поле в качестве поля _id: https://github.com/elastic/elasticsearch/issues/6730
Так что это двойной поиск, сначала выясняется идентификатор упругого поиска, а затем выполняется more_like_this
единственный способ добиться того, чтоЯ ищу? Кто-то, кажется, задал подобный вопрос три года назад, но у него нет ответа.
ArticleDocument.search().query("bool",
should=Q("more_like_this",
fields= ["slug", "text"],
like={"doc": {"slug": "OEXxySDEPWaUfgTT54QvBg",
}, "_index":"article", "_type":"doc"},
min_doc_freq=1,
min_term_freq=1
)
).to_queryset()
Возвращает:
<ArticleQuerySet [<Article: OEXxySDEPWaUfgTT54QvBg)>]>