Вот мое отображение (некоторые поля переименованы / удалены), я использую ES 6.0
{
"mappings": {
"_doc" :{
"properties" : {
"username" : {
"type": "keyword",
"fields": {
"suggest" : {
"type" : "completion",
"contexts": [
{
"name": "user_id",
"type": "category"
}
]
}
}
},
"user_id": {
"type": "integer"
}
}
}
}
}
Теперь, когда я пытаюсь проиндексировать документ с помощью
PUT usernames/_doc/1
{
"username" : "JOHN",
"user_id": 1
}
OR
PUT usernames/_doc/1
{
"username" : {
"input": "JOHN",
"contexts: {
"user_id": 1
}
}
"user_id": 1
}
Первое не индексируется в контексте, а второе просто не выполняется. Я попытался добавить путь так:
{
"mappings": {
"_doc" :{
"properties" : {
"username" : {
"type": "keyword",
"fields": {
"suggest" : {
"type" : "completion",
"contexts": [
{
"name": "user_id",
"type": "category",
"path": "user_id",
}
]
}
}
},
"user_id": {
"type": "integer"
}
}
}
}
}
И повторная попытка индексации
PUT usernames/_doc/1
{
"username" : "JOHN",
"user_id": 1
}
Но просто выбрасывает контекст, должно быть ключевое слово или текстовая ошибка. Должен ли я сдаться и сделать совершенно новое свойство username-autocomplete вместо этого? Или есть какой-то волшебный способ, где я могу иметь подсказку для завершения контекста и другое поле в том же свойстве и иметь возможность индексировать, как если бы я использовал другие свойства мультиполя?