Как мне настроить отображение ключевых слов в NEST? - PullRequest
0 голосов
/ 18 октября 2018

Я на NEST v6.3.1, ElasticSearch v6.4.2

Я не могу индексировать свое поле в качестве ключевого слова.

Я пробовал оба атрибута:

[Keyword]
public string Suburb { get; set; }

и свободно:

client.CreateIndex(indexName, i => i
                .Mappings(ms => ms
                    .Map<Listing>(m => m
                        .Properties(ps => ps
                            .Keyword(k => k
                                .Name(n => n.Suburb)))
                        .AutoMap())
                    .Map<Agent>(m => m
                        .AutoMap())
                    .Map<BuildingDetails>(m => m
                        .AutoMap())
                    .Map<LandDetails>(m => m
                        .AutoMap())
                )
            );

Оба результата дают одно и то же:

{
  "listings": {
    "mappings": {
      "listing": {
        "properties": {          
          "suburb": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

например, не соответствует тому, что я вижу здесь: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/attribute-mapping.html

То же самое происходит, когда я пытаюсь использовать [GeoPoint].Должен быть тип геопункта, но он сопоставлен с числами с плавающей точкой:

"latLong": {
            "properties": {
              "lat": {
                "type": "float"
              },
              "lon": {
                "type": "float"
              }
            }
          }

Так что я что-то упускаю, просто не знаю, что.

Любая помощь?

Спасибо

1 Ответ

0 голосов
/ 18 октября 2018

Вероятно, индекс уже существует, и отображение поля не может быть обновлено.Проверьте .IsValid в ответе на запрос создания индекса и, если он недействителен, посмотрите на ошибку и причину.Скорее всего, вам нужно удалить индекс и создать его заново.

Также обратите внимание, что сопоставления нескольких типов в одном индексе недопустимы в Elasticsearch 6.x и завершатся ошибкой.Либо создайте отдельные индексы для разных типов, либо, если типы имеют одинаковую структуру полей и , и вы хотите индексировать / анализировать их одинаковым образом, вы можете рассмотреть вопрос о введении дополнительного поля дискриминатора.

...