java - ElasticSearch查询不包含

标签 java elasticsearch

我正在编写一个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/

    相关文章:

    java - 缺少记录参数 Sonar 规则

    java - 使用反射代替长 switch 语句

    json - 如何根据响应查询Elasticsearch

    elasticsearch - 将具有Elasticsearch索引的本地目录挂载到Minikube

    elasticsearch - GoLang、elasticsearch多个查询参数

    java - 如何使用 Hibernate for PostgreSQL 创建索引

    java - 测试该文件已移动到 "processed"路由 ftp ://host/incoming? move=processed in Camel

    java - 每个用户只允许一个 session

    elasticsearch - 使用较高的页面排名和较低的URL对结果elasticsearch排序

    c# - NEST-低级搜索不返回日期