【问题标题】:Building a bool query with Spring Data Elasticsearch使用 Spring Data Elasticsearch 构建布尔查询
【发布时间】:2022-12-11 12:12:30
【问题描述】:

我正在尝试使 bool 必须匹配具有此结构的 java 中的查询

GET offers/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "offerLine": "Technology"
          }
        }
      ]
    }
  }
}

我已经试过了,我得到了一个空值:

private NativeQueryBuilder prepareElasticQuery(OfferRequest request){
    BoolQuery.Builder bqb = QueryBuilders.bool();
    bqb.must(m->m.match(ma->ma.field("offerLine").query(request.getOfferLine())));
    NativeQueryBuilder nqb= new NativeQueryBuilder().withQuery(bqb.build()._toQuery());
    return nqb;
}

bool 查询得到这个值:

BoolQuery: {"must":[{"match":{"offerLine":{"query":"Technology"}}}]}

而且我似乎找不到 value() 方法的替代方法,因为它已被弃用。 关于如何正确构建它的任何线索?

编辑:这是正确的方法。我的问题是进一步处理结果。

【问题讨论】:

  • "offerLine": "Technology""offerLine":{"query":"Technology"}是等价的
  • 你是对的。我发现我得到了点击但没有正确处理它们所以我最终得到一个空的结果列表。谢谢
  • 好的,很高兴你明白了

标签: java elasticsearch spring-data-elasticsearch nativequery


【解决方案1】:

尝试这样做:

public SearchRequest prepareElasticQuery(OfferRequest request) {
  SearchRequest searchRequest = new SearchRequest("offers");
  searchRequest.source(new SearchSourceBuilder()
    .query(
      QueryBuilders.boolQuery()
        .must(
          QueryBuilders.matchQuery("offerLine", request.getOfferLine()
        )
      )
    )
  );
  return searchRequest;
}

【讨论】:

    猜你喜欢
    • 2017-12-24
    • 2017-09-18
    • 2014-11-09
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多