【问题标题】:Elasticsearch suggest condition checkElasticsearch 建议条件检查
【发布时间】:2016-12-24 01:19:56
【问题描述】:

下面是我的数据库数据。

{ 
"_id" : ObjectId("572c957244ae959c6517bcb2"), 
"name":"first",
"rating" : 2.0, 
"private" : "true"
}
{ 
 "_id" : ObjectId("572c957244ss959c6517bcb2"), 
"name":"first",
"rating" : 2.0, 
"private" : "false"
}
{ 
"_id" : ObjectId("572c9dfef44ae959c6517bcb2"), 
"name":"first",
"rating" : 2.0, 
"private" : "false"
}
{ 
"_id" : ObjectId("572c9dfef44ae959c6517bcb2"), 
"name":"first",
"rating" : 2.0, 
}

我需要在我的elasticsearch中获取“private”以外的:“true”(即包括没有私有文件的json对象)。我要获取的elasticsearch查询如下

curl -XGET 'localhost:9200/tellofy/_suggest?pretty' -d '
{"brand-suggest":  {"completion":"field":"nameSuggest","size":"5"},   "text":"first"}}'

我需要获取名称以及私有“false”并且没有该字段。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    也许你可以试试这个:

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

    我认为您还必须为映射中的私有字段设置默认值“false”:

    curl -X PUT "http://localhost:9200/tellofy/test/_mapping" -d'
    {
       "test": {
          "properties": {
             "name": {
                "type": "string"
             },
             "rating": {
                "type": "float"
             },
             "private": {
                "type": "boolean"
             },
             "nameSuggest": {
                "type": "completion",
                "context": {
                   "private": {
                      "type": "category",
                      "path": "private",
                      "default": false
                   }
                }
             }
          }
       }
    }'
    

    不过,我自己并没有在 elasticsearch 中使用上下文建议器。请参阅Elasticsearch Context Suggester documentation 了解更多信息。

    另请参阅此问题:Elasticsearch context suggester, bool on contexts

    【讨论】:

    • 嗨 Neman ,我在上面尝试过,当我将 _suggest insted of _search 放入 URL “nested: ElasticsearchIllegalArgumentException[suggester [completion] doesn't expect any context];”中时会引发以下错误。如果我在您发布时放置_search,则会发生以下错误“错误”:“SearchPhaseExecutionException [无法执行阶段[查询],所有分片都失败;.....
    • 有什么可以解决我上面描述的错误。
    • 你用的是哪个版本的elasticsearch?
    • 弹性搜索 1.7.3
    • 我认为您的映射缺少上下文,我已在上面更新了我的答案。
    猜你喜欢
    • 2014-11-08
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多