spring - 如何在ElasticSearch中编写搜索查询?

标签 spring grails groovy elasticsearch grails-2.0

我使用Grails ElasticSearch插件,并希望使用以下查询:

"bool" : {
    "must" : {
        "term" : { "user" : "kimchy" }
    },
    "must_not" : {
        "range" : {
            "age" : { "from" : 10, "to" : 20 }
        }
    },
    "should" : [
        {
            "term" : { "tag" : "wow" }
        },
        {
            "term" : { "tag" : "elasticsearch" }
        }
    ],
    "minimum_should_match" : 1,
    "boost" : 1.0
}

使用Grails插件中的groovy api,我会编写类似以下内容:
def res = userAgentIdentService.search() {
    "bool" {
        "must" {
            term("user" : "kimchy" )
        }
        "must_not"  {
            "range"  {
                age("from" : 10, "to" : 20 }
            }
        }
        "should" : [
            {
                term( "tag" : "wow" )
            }
            {
                term("tag" : "elasticsearch" )
            }
        ]
        "minimum_should_match" = 1
        "boost" = 1.0
    } 

}

我的查询不起作用!
  • 我必须在哪里定义minimum_should_match,如何定义它?
  • 我必须如何以grails / groovy方式编写“应该”:[...]方括号符号?
  • 最佳答案

    我认为您在搜索请求中缺少几个json级别。我认为您必须在未指定查询的情况下才能使用该查询(它也可以是过滤器,甚至还有其他功能)。从groovy api引用中查看this example:

    def search = node.client.search {
        indices "test"
        types "type1"
        source {
            query {
                terms(test: ["value1", "value2"])
            }
        }
    }
    

    关于spring - 如何在ElasticSearch中编写搜索查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193358/

    相关文章:

    java - Spring Data Autowiring 多个数据源失败

    java - Spring + Hibernate 与 Hazelcast 作为二级缓存

    jquery - 在Grails日期中将JSON解码到Groovy

    grails - Intellij IDEA 11.0.2无法解决对Grails 2.0.0的依赖关系

    java - 是否可以将 Groovy 的 SwingBuilder 与 Java JFrame 子类结合起来?

    java - 域类与 Dto 类与 Swagger 命名

    java - 找不到包(多模块 spring 项目)

    mysql - 连接已经关闭

    java - 重载 Grails 静态 'mapping' 属性来固定数据库对象是否违反了 DRY?

    java - 函数 .contains() 无法按预期方式在 Groovy 中工作