gpt4 book ai didi

java - ElasticSearch查询不包含

转载 作者:行者123 更新时间:2023-12-03 00:44:51 27 4
gpt4 key购买 nike

我正在编写一个Java应用程序,并使用 flex 搜索作为数据库。
我正在寻找一种编写“不包含”查询的方法。
例如,我有一个带有值的字段类别:

  • 汽车
  • 巴士
  • 火车
  • Fastcar

  • 现在,我要获取所有类别中不包含“快速”的条目。
    如何建立这样的查询?
    我一直在这里看,但找不到任何东西。
    提前致谢
    因此,感谢@James和@Bhavya Gupta,我可以更新查询,但无法正常工作。
    我的查询现在是:
    "query": {
    "bool": {
    "must": {
    "match_all": {}
    },
    "filter": {
    "bool": {
    "must_not": [
    {
    "term": {
    "BetriebsID": "Aufzug"
    }
    } ]
    }
    }
    }
    }
    但是结果仍然包含以下匹配:
    "hits": [
    "_source": {
    ...
    "FormNo": 9150520000000692,
    "CreatedTime": "2020-05-15T08:19:03.000Z",
    "templateId": "Aufzugsstoerung",
    "SYS_FORM_ID": "150520_000000692",
    "trecId": 151,
    "BetriebsID": "20200515_1019_Aufzugsstoerung",
    "displayName": "Aufzugsstörung",
    ...
    }
    }]
    我也使用James的通配符查询进行了尝试,结果相同。

    最佳答案

    您可以使用带有must_not的 bool(boolean) 查询。 Kibana查询如下所示:

    GET my_index/_search
    {
    "query": {
    "bool": {
    "must_not": [
    {
    "wildcard": {
    "category": {
    "value": "fast*"
    }
    }
    }
    ]
    }
    }
    }
    示例Java代码:
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
    .query(QueryBuilders.boolQuery().mustNot(QueryBuilders.wildcardQuery("category", "fast*")));
    SearchRequest searchRequest = new SearchRequest("index_name");
    searchRequest.source(searchSourceBuilder);
    SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

    关于java - ElasticSearch查询不包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64009221/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com