Индексировать только несколько полей в сопоставлении ElasticSearch

В соответствии с руководством MongoDB вы можете использовать оператор $regex:

collection.findOne({Name: { $regex: '.*world_no_safe.*' }});

0
задан Siva 23 January 2019 в 04:54
поделиться

2 ответа

Вам нужно присвоить индекс как «not_analyzed»

"Date of birth": { "type": "text", "index" : "not_analyzed" },

0
ответ дан Siva 23 January 2019 в 04:54
поделиться

Давайте попробуем это с минимальным примером (добавленным через консоль в Kibana, но вы сможете легко изменить его на простые команды curl):

PUT test
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "_doc": {
      "dynamic": "strict",
      "properties": {
        "family name": {
          "type": "text",
          "index": "true"
        },
        "Firstname": {
          "type": "text",
          "index": "true"
        },
        "Date of birth": {
          "type": "text",
          "index": "false"
        }
      }
    }
  }
}

PUT /test/_doc/1
{
  "family name": "foo",
  "Firstname": "bar",
  "Date of birth": "baz"
}

Это работает для меня. Я могу найти foo и bar, но не baz:

enter image description here

Также после обновления шаблона индекса дата поле рождения не может быть ни найдено, ни найдено:

enter image description here

Некоторые быстрые наблюдения:

  1. [114 ] true или false . Это в другой области, поэтому, вероятно, не связано с вашей проблемой.
  2. 1113 Если бы вы не хотели страдать в будущем, я бы избегал пробелов в именах полей. Я могу видеть, что многие вещи идут не так, как надо.
0
ответ дан xeraa 23 January 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: