繁体   English   中英

无法使用Java API建立对Elasticsearch的查询

[英]Not able to build query for Elasticsearch using java api

我正在尝试通过Java API查询Elasticsearch的以下ElasticSearch查询

get my_index12/_search {
        "query" : {
            "bool": {
                "must": [
                    {
                        "match": {
                            "code": {
                             "query": "TE-7000-8002-W",
                             "operator": "and"
                            }
                        }
                    },
                    {
                        "match": {
                            "locale": {
                             "query": "en_US",
                             "operator": "and"
                            }
                        }
                    }
                ]
            }
        }
     }

上面的查询工作正常是Kibana。 我正在尝试使用Elasticsearch Java API复制相同的查询。

请找到我要构建的JAVA API查询。

QueryBuilder qb = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("code",name)).operator(Operator.AND);

正在从日食中获取以下错误。

The method operator(Operator) is undefined for the type BoolQueryBuilder

我正在使用Elasticsearch 6.2.3版本

在Java Transport Client中,搜索请求可以同时以QueryBuilders和XContent格式构建,后者以json格式构建查询参数。 使用QueryBuilder,尤其是BoolQuery,查询dsl中的运算符由must()(均值和运算符)或must()(均值或运算符)表示。

如前所述,您的查询可以表示为:

QueryBuilders.boolQuery().must().must().build();

另一个有趣的问题是如何呈现以下查询DSL:

{
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "field1": "value"
                }
            }, {
                "match": {
                    "filed2": "value"
                }
            }],
            "should": [{
                "term": {
                    "field3": "value"
                }
            },{
                "term": {
                    "field4": "value"
            }]
        }
    }
}

一旦您了解了演示查询DSL并成功使用Java API实现了它,就意味着您将了解Java Transport客户端API。 希望能为您提供帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM