【问题标题】:ElasticsearchIllegalArgumentExceptionElasticsearchIllegalArgumentException
【发布时间】:2016-08-18 06:49:56
【问题描述】:

我的代码是

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]; "
    }

出现上述错误的原因是什么。我无法找到该错误的原因。

【问题讨论】:

  • 能否提供nameSuggest字段的映射关系?
  • zmy namesuggest 是一个 jsonObject。 mappingJSON.put("nameSuggest", new JSONObject("{\"type\": \"completion\", \"analyzer\" : \"simple\", \"search_analyzer\" : \"simple\", \ "上下文\" : \"简单\"}"));

标签: elasticsearch elasticsearch-1.6.0


【解决方案1】:

nameSuggestcompletion 类型但没有context,因此您的建议查询不允许指定context

查看normal completion fieldscompletion 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"
    }
  }
}

【讨论】:

  • 嗨,瓦尔先生。谢谢你的建议。 , 最初我需要检查它是否正确。为此,我在终端中运行 curl 命令。在这里,您要求我更改上下文,对于终端,我需要在上面的 curl..."context" 中更改什么。
  • 您只需从查询中删除 context 部分,它就会起作用
  • 但是我需要检查所有私有(“false”)以及我的文本(“samp1”)的条件。
  • 那么你需要上下文 :) 没有其他办法。
  • 我的实际问题在下面的链接中。 “stackoverflow.com/questions/38995684/…”你能帮忙吗,根据上面的链接问题。