Как запросить вложенный путь с пробелами и другими символами - PullRequest
0 голосов
/ 26 октября 2018

У меня есть довольно «сложный» документ эластичного поиска, в котором есть пробелы. Есть ли способ заставить запрос работать без переиндексации? :)

"_source": {
    "threads": {
        "MANAGEMENT DISCUSSION SECTION": [],
        "Q&A": [
            {
                "sentence_sentiment": [
                       {
                           "sentiment": {...}

}
],...

Мой текущий код выглядит примерно так.

def query_nested(path='threads.Q&A', to_match=None, *args, **kwargs):
    q_match = None
    if to_match:
        for match in to_match:
             if q_match is None:
                 q_match = Q("match", **match)
             else:
                 q_match &= Q("match", **match)

        q = Q("nested", path=path,
              query=q_match,
              inner_hits={})

        s = Search()[kwargs.get('start', 0):kwargs.get('end', 25)]
        s = s.query(q)
        s = s.source(include=["title"])
        s = s.sort('-year', '-month', '-day')

        return s.execute()

    return None

Но это приводит к неправильному запросу из-за .Q & A, конечно.

Я также пробовал с потоками ["Q & A"], но это тоже не работает.

В идеале я не хочу переиндексировать, поскольку коллекция действительно довольно большая.

...