Могу ли я использовать spannear во вложенном поле для другого блока в elasticsearch?

#elasticsearch #search-engine

#elasticsearch #поисковая система

Вопрос:

Документ выглядит так:

 doc = {  
  "id": 1,  
  "content": [  
    {  
      "txt": I,  
      "time": 0,  
    },  
    {  
      "txt": have bla bla,  
      "time": 1,  
    },  
    {  
      "txt": bla bla book,  
      "time": 2,  
    },  
    {  
      "txt": do not match this block,  
      "time": 3,  
    },  
  ]  
}  
  

И поисковый запрос выглядит так:

 "span_near": {
    "clauses": [
        {"span_term": {"content.txt": "I"}},
        {"span_term": {"content.txt": "book"}},
    ],
    "slop": 5,
    "in_order": False,
}
  

И я хочу вернуть «content.time»: [0,1,2]

Теперь я знаю, что с помощью вложенного поля можно получить «content.time», но, похоже, «content.txt » разделяется между каждым блоком. И я хочу выполнить поиск всего «content.txt «похоже на сплющенную структуру, но все же может возвращать соответствующее «content.time». Кто-нибудь знает, как этого добиться? Спасибо!

Комментарии:

1. [nested] query does not support [span_near] не могли бы вы поделиться ожидаемым результатом поиска?

2. Ожидаемый результат поиска похож на соответствие «content.txt » для «У меня есть книга бла-бла-бла-бла» и верните соответствующий «content.time»: [0,1,2].

3. Можете ли вы поделиться своим отображением для этой структуры? имеет content nested тип?

4. Привет, я не знаю, следует ли мне использовать вложенный или сплющенный тип, если я хочу получить соответствующий «content.time».