ElasticSearch: как ограничить поиск, чтобы вернуть определенные типы документов? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть два вида документов:


class Article(Document):
    content = Text(analyzer='snowball', fields={'raw': Keyword()})

    class Index:
        name = 'blog'

    def save(self, **kwargs):
        return super(Article, self).save(**kwargs)


class Thing(Document):
    content = Text(analyzer='snowball', fields={'raw': Keyword()})

    class Index:
        name = 'blog'


    def save(self, **kwargs):
        return super(Thing, self).save()

Я сделал две простые вставки, например так:

thing = Thing(meta={'id': 122}, content='a thing')
article = Article(meta={'id': 154}, content='an article ')
article.save()
thing.save()

Теперь я хочу получить документ типа Thing, чье содержание нечетко похоже на строку «статья».Вот код для этого.

ubq = Thing.search(using=client).query("fuzzy", content="article")  

Странная вещь, когда я перебираю результаты по ubq.execute(), я получаю объект типа Article (документ, который я вставил ранее).

Я ожидал, что я вообще ничего не должен получить.Почему Thing().search() возвращает объект типа Article?

...