2016-08-18 3 views
0

Мой кодElasticsearchIllegalArgumentException

curl -XGET 'http://localhost:9200/web/_suggest?pretty' -d ' 
{ "brand-suggest": {"completion": {"field": "nameSuggest","size": "5","context": { "private": "false" }}, "text": "sampl"}}' 

У меня есть ошибка при попытке в elasticsearch предложить запрос.

"index" : "webpage", 
     "shard" : 4, 
     "status" : 500, 
     "reason" : "BroadcastShardOperationFailedException[[tellofy][4] ]; nested: ElasticsearchException[failed to execute suggest]; nested: ElasticsearchIllegalArgumentException[suggester [completion] doesn't expect any context]; " 
    } 

В чем причина вышеуказанной ошибки. Я не могу найти причину этой ошибки.

+0

Можете ли вы предоставить сопоставление поля nameSuggest? – Val

+0

zmy namesuggest - это jsonObject. mappingJSON.put ("nameSuggest", новый JSONObject ( "{\" type \ ": \" complete \ ", \" analyzer \ ": \" simple \ ", \" search_analyzer \ ": \" simple \ " , \ "context \": \ "simple \"} ")); – venkat

ответ

1

nameSuggest имеет completion тип, но без context, так что ваш Предлагайте запрос не может указать context

Чувствуете разницу между normal completion fields и completion fields with context

Если вы хотите, чтобы выполнить следующий запрос

curl -XGET 'http://localhost:9200/web/_suggest?pretty' -d '{ 
    "brand-suggest": { 
    "completion": { 
     "field": "nameSuggest", 
     "size": "5", 
     "context": { 
     "private": "false" 
     } 
    }, 
    "text": "sampl" 
    } 
}' 

Вам необходимо изменить отображение поля nameSuggest, т.е. добавить конфигурацию контекста раздел:

{ 
    "type": "completion", 
    "analyzer": "simple", 
    "search_analyzer": "simple", 
    "context": { 
    "private": { 
     "type": "category", 
     "path": "private" 
    } 
    } 
} 
+0

Привет, господин Валь. спасибо за ваше предложение. , Первоначально мне нужно проверить, правильно ли это. для этого я запускаю команду curl в моем терминале. здесь вы попросили меня изменить мой контекст, для терминала, что мне нужно изменить в выше curl ... «context». – venkat

+0

Вам просто нужно удалить раздел «context» из вашего запроса, и он будет работать – Val

+0

Но мне нужно проверить, что все частные («ложные») вместе с моим текстом («samp1»). – venkat

Смежные вопросы