2017-01-16 2 views
2

Я немного борюсь с атрибутами поля в ElasticSearch, тем более что вещи немного изменились с 5.x (к которым я переношу наш код).Атрибуты Elasticarch C# Nest [5.x]

Примером может служить следующее:

[Text(Index = false)] 
    public string Id      { get; set; } 
    [Keyword] 
    public string Tags      { get; set; } 
    [Text] 
    public string Title      { get; set; } 

У меня есть куча полей, как это, но я стараюсь, чтобы выяснить, лучшие атрибуты для полей, которые следуют за этим:

  • Текст поле для поиска AS-IS, не интерпретируемое (например, идентификатор строки). Я хочу, чтобы иметь возможность искать точную строку, ничего больше
  • Английский текст, в котором я хочу, чтобы можно было выполнить полный поиск слов и близости.
  • Перечисление, в котором значения могут быть сохранены как конечный список строк, и мне нужно использовать это как критерий поиска
  • Теги, которые представляют собой список слов, но не образуют предложения; Мне нужно, чтобы иметь возможность искать через эти
  • Числа, которые должны быть сохранены, а не для поиска
  • Даты, которые должны быть сохранены и для поиска
  • Даты, которые должны быть сохранены, но не для поиска

Многие сообщения относятся к документации ES, но я действительно не вижу ясности в документации атрибутов; он, кажется, написан с людьми, которые уже понимают систему в виду. Если у кого-то есть excelsheet, как разбивка атрибута и их эффектов (хранимых, доступных для поиска, анализа и т. Д.), Которые были бы фантастическими

ответ

7

Документация со временем станет лучше; contributions are most appreciated :)

Чтобы ответить на ваши вопросы:

  • текстовое поле, чтобы можно было найти AS-IS, не интерпретируется (строка ID, например). Я не хочу, чтобы иметь возможность искать точную строку, ничего другого

использовать KeywordAttribute, который создает поле с Keyword data type.

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

использовать TextAttribute, который создает поле с Text data type. По умолчанию используемым анализатором будет Standard Analyzer. В зависимости от вашего домена и критериев поиска вы можете использовать другой анализатор, предварительно сконфигурированный или настраиваемый.

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

Вы можете использовать KeywordAttribute здесь, если вы хотите точные совпадения , Например, вы можете искать регистр без учета регистра, но в этом случае вы можете использовать TextAttribute с пользовательским анализатором, состоящим из Keyword tokenizer и Lowercase token filter.

  • Теги, которые список слов, но не образуют предложения; Мне нужно, чтобы иметь возможность искать через эти

, если вы ищете неструктурированный поиск, а затем использовать TextAttribute.

-Номера, которые должны быть сохранены, а не для поиска

использовать NumberAttribute, который отображает на numeric data types, с NumberType, который соответствует типу numeric РоКо например, для Int32 (int), использование NumberType.Integer. Для номера, который должен быть сохранен в _source, но не доступен для поиска, установите Index=false, например.

[Number(NumberType.Integer, Index = false)] 
public int MyNumber { get;set; } 

Index соответствует index числовых типов.

-Dates, которые должны быть сохранены и поиска

использовать DateAttribute который соответствует Date data type

-Dates, которые должны быть сохранены, но не для поиска

использовать DateAttribute с Index=false

Взгляните на documentation for the mapping parameters that are available to field mappings. Имена параметров в документации Elasticsearch отображаются в NEST с именами в Pascal.

+0

Было очень полезно, спасибо много! Я думаю, что одна из трудностей связана с параллельной документацией из-за того, что драйвер C# является своей собственностью; имеет ли смысл в конечном итоге сделать что-то вроде MSDN, где образцы .NET находятся как в C#, так и в VB, и обе версии находятся в одном документе? в их случае у вас есть переключатель, чтобы решить, какой язык посмотреть, но страницы одинаковы, что лучше для индексации поиска. – Thomas

Смежные вопросы