弹性搜索中的完成建议器不会返回结果

时间:2018-01-08 02:39:42

标签: elasticsearch

我很难在我的代码中完成Completion Suggester。

我正在尝试创建一个自动完成组件,用于搜索以前运行的查询。我想使用Completion Suggester。

我有以下映射:

$('.go-btn').click(function() {
   window.open("#my-dropdown", "_blank");
});

我想在 keywordSearch_en 字段上运行建议。我试过了

{
  "liferay-20116": {
    "mappings": {
      "querySuggestion": {      
        "properties": {
          "companyId": {
            "type": "string",
            "index": "not_analyzed",
            "store": true
          },
          "keywordSearch_en": {
            "type": "string",
            "fields": {
              "ngram": {
                "type": "string",
                "analyzer": "gsearch_shingle_analyzer",
                "search_analyzer": "standard"
              },
              "suggest": {
                "type": "completion",
                "analyzer": "simple",
                "payloads": false,
                "preserve_separators": true,
                "preserve_position_increments": true,
                "max_input_length": 50,
                "context": {
                  "company": {
                    "type": "category",
                    "path": "companyId",
                    "default": [
                      "20116"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

我只收到此错误消息:“字段[建议]不是完成建议字段”。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您使用了错误的_suggest语法。

语法应该是这样的。

curl -XPOST 'localhost:9200/_suggest' -d '{
  "my-suggestion" : {
    "text" : "the amsterdma meetpu",
    "term" : {
      "field" : "body"
    }
  }
}'

你应该记住_search比_suggest更好。引用here

  

为了节省一些网络开销,请从中过滤掉不必要的字段   _source使用源过滤来最小化_source大小。请注意,_suggest端点不支持源过滤,但在_search端点上使用suggest

如果你想使用你的语法 正在使用截至目前。建议应该与_search端点一起使用 使用这样的东西。

POST music/_search
{
    "_source": "suggest", 
    "suggest": {
        "song-suggest" : {
            "completion" : {
                "field" : "suggest" 
            }
        }
    }
}

答案 1 :(得分:0)

问题在于建议字段的嵌套。工作机构应该是:

POST liferay-20116/_suggest 
{
  "my-suggester": {
    "text": "service",
    "completion": {
      "field": "keywordSearch_en.suggest"
    }
  }
}

我遇到的问题还在于我搞错了我的错误类型查询的映射,然后字段名称变得重复,建议停止工作。