Я побежал ElasticSearch 1.x (счастливо) более года. Теперь пришло время для некоторой модернизации - до 2.1.x. Узлы должны быть отключены, а затем (один за другим) снова включиться. Кажется, достаточно легко.
Но потом я столкнулся с бедами. Основная проблема - это поле _uid
, которое я создал сам, чтобы узнать точное местоположение документа из случайного другого (путем хэширования значения). Таким образом, я знал, что только тот будет возвращен. Во время обновления я получилElasticsearch 2.x индексное сопоставление _id
MapperParsingException[Field [_uid] is a metadata field and cannot be added inside a document. Use the index API request parameters.]
Но когда я пытаюсь сопоставить мой бывший _uid
в _id
(который также должен быть достаточно хорошо) я получаю что-то подобное.
Причина, по которой я использовал параметр _uid
, заключается в том, что время поиска намного ниже, чем termsQuery (или тому подобное).
Как я могу использовать поле _uid
или _id
в каждом документе для быстрого (и точного) поиска определенных точных документов? Обратите внимание, что я должен называть тысячи точных в то время, поэтому мне нужен ID-запрос. Также может произойти то, что _uid
или _id
документа не существует (в этом случае я хочу, как сейчас, «ложноподобный» результат)
Примечание: обновление от 1.x до 2.x довольно большой (Фильтры нет, нет точки в именах, доступ не по умолчанию _xxx
)
Update (не помог):
обновления отображения _uid
или _id
с помощью:
final XContentBuilder mappingBuilder = XContentFactory.jsonBuilder().startObject().startObject(type).startObject("_id").field("enabled", "true").field("default", "xxxx").endObject()
.endObject().endObject();
CLIENT.admin().indices().prepareCreate(index).addMapping(type, mappingBuilder)
.setSettings(Settings.settingsBuilder().put("number_of_shards", nShards).put("number_of_replicas", nReplicas)).execute().actionGet();
результатов:
MapperParsingException[Failed to parse mapping [XXXX]: _id is not configurable]; nested: MapperParsingException[_id is not configurable];
Update: Изменено имя в _id
вместо _uid
так как последняя строить из _type
# _id
. Тогда мне нужно будет написать _id
.