Как поля связаны с терминами в инвертированном индексе в elasticsearch?

Насколько я понимаю, elasticsearch использует структуру, называемую инвертированным индексом, для обеспечения полнотекстового поиска. Понятно, что в инвертированном индексе есть термины и идентификаторы документов, в которых есть этот термин, но документ может иметь любое количество полей, и имя поля может использоваться во время запроса для просмотра / поиска только в этом поле. В таком случае, как elasticsearch ограничивает / ограничивает поиск только определенным полем? Я хотел бы знать, содержит ли инвертированный индекс имя поля или идентификатор поля, а также условия и идентификатор документа.

То же самое происходит, когда вы сортируете по любому полю. Так что может быть способ связать термины с именами полей. Пожалуйста, помогите мне разобраться в тонкостях этого вопроса.

Заранее спасибо.


person Mohan kumar    schedule 19.03.2016    source источник


Ответы (2)


Я хотел бы знать, содержит ли инвертированный индекс имя поля или идентификатор поля, а также условия и идентификатор документа.

Цитата из Lucene Docs

Одна и та же строка в двух разных полях считается разными терминами. Таким образом, термины представлены в виде пары строк, первая из которых обозначает поле, а вторая - текст имени внутри поля.

В таком случае, как elasticsearch ограничивает / ограничивает поиск только определенным полем?

Каждый сегментный индекс поддерживает векторы терминов: для each field in each document, the term vector is stored. A term vector consists of term text and term frequency.

Следовательно, индексы поддерживаются для каждого поля в каждом документе.

person Rahul    schedule 19.03.2016

У нас есть инвертированный индекс для каждого поля для каждого индекса.

И есть нечто, называемое кешем данных поля (или значениями документа), у которого есть инвертированный «инвертированный индекс». Здесь происходит поиск всех документов и значений поля.

person Vineeth Mohan    schedule 19.03.2016