Я совершенно новичок вasticsearch и пытаюсь использовать средство подсказки завершения эластичного поиска в существующем поле с именем "identity.full_name", index = "search" и type = "person".Я следовал приведенному ниже указателю, чтобы изменить отображения поля.
1)
POST /search/_close
2)
POST search/person/_mapping
{
"person": {
"properties": {
"identity.full_name": {
"type": "text",
"fields":{
"suggest":{
"type":"completion"
}
}
}
}
}
}
3)
POST /search/_open
Когда я проверяю сопоставления в этой точке, используя
GET search/_mapping/person/field/identity.full_name
, я получаю результат,
{
"search": {
"mappings": {
"person": {
"identity.full_name": {
"full_name": "identity.full_name",
"mapping": {
"full_name": {
"type": "text",
"fields": {
"completion": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
},
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
}
}
}
}
}
}
}
}
}
, который предполагает, что он был обновлен, чтобы быть полем завершения.
Однако, когда я запрашиваю, чтобы проверить, работает ли это, используя,
GET search/person/_search
{
"suggest": {
"person-suggest" : {
"prefix" : "EMANNUEL",
"completion" : {
"field" : "identity.full_name"
}
}
}
}
Это выдает мне ошибку «Поле [identity.full_name] не является полем для предложения завершения»
Я не уверен, почему я получаю эту ошибку.Могу ли я попробовать еще что-нибудь?
пример данных:
{
"_index": "search",
"_type": "person",
"_id": "3106105149",
"_score": 1,
"_source": {
"identity": {
"id": "3106105149",
"first_name": "FLORENT",
"last_name": "TEBOUL",
"full_name": "FLORENT TEBOUL"
}
}
}
{
"_index": "search",
"_type": "person",
"_id": "125296353",
"_score": 1,
"_source": {
"identity": {
"id": "125296353",
"first_name": "CHRISTINA",
"last_name": "BHAN",
"full_name": "CHRISTINA K BHAN"
}
}
}
, поэтому, когда я делаю GET на основе префикса "CHRISTINA"
GET search / person / _search
{
"suggest": {
"person-suggest" : {
"prefix" : "CHRISTINA",
"completion" : {
"field" : "identity.full_name.suggest"
}
}
}
}
Я получаю все результаты, как запрос match_all.