如何编写elasticsearchservice.search(关闭查询,参数,过滤器)?

时间:2018-07-02 11:05:25

标签: elasticsearch grails

我正在尝试为我的grails应用程序实现弹性搜索。我正在使用grails 3.3.6版本,gradle包装器3.1,grails elasticsearch插件是2.4.0和弹性搜索版本是5.4.1。 我正在努力在elasticsearchservice类中传递搜索方法的参数。 “ elasticsearchservice.search(关闭查询,参数,过滤器 ”)

我正在传递这样的参数并在

上出错
  

匹配

elasticSearchService.search({match(fields: ["title", "description"],
                query: q,fuzziness:'4',fuzzy_prefix_length:1)}, null,[indices: Book, types: Book, score: true])

实际上,我在这里尝试使用具有模糊性的匹配,我尝试了使用kibana和邮递员使用elasticsearch进行_search。它在那里工作。

POST /books/code/_search
{
  "query": {
    "match": {
      "author": {
        "query": "keeen",
        "fuzziness": 4,
        "prefix_length": 1
      }
    }
  }
}

我希望应用程序在控制台中生成的查询具有相同的结构。但是我的应用程序在控制台中生成的查询结构是

"query" : {
    "query_string" : {
      "query" : "grails",
      "fields" : [ ],
      "use_dis_max" : true,
      "tie_breaker" : 0.0,
      "default_operator" : "and",
      "auto_generate_phrase_queries" : false,
      "max_determinized_states" : 10000,
      "enable_position_increments" : true,
      "fuzziness" : "AUTO",
      "fuzzy_prefix_length" : 0,
      "fuzzy_max_expansions" : 50,
      "phrase_slop" : 0,
      "escape" : false,
      "split_on_whitespace" : true,
      "boost" : 1.0
    }
  }

如何在那得到我期望的查询?任何想法-有人可以帮我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试以下代码:

CRS