简体   繁体   English

带有spring数据elasticsearch的NativeSearchQueryBuilder

[英]NativeSearchQueryBuilder with spring data elasticsearch

I need to make search with NativeSearchQueryBuilder it works but when I add filter it doesn't work 我需要使用NativeSearchQueryBuilder进行搜索,但它无法正常工作,但是添加过滤器后,

    SearchQuery searchQuery = new NativeSearchQueryBuilder()
            .withQuery(queryString(query))
            .withFilter(FilterBuilders.termFilter("domain", "TEST"))
            .build();
    Page<Asset> asset =
            elasticsearchTemplate.queryForPage(searchQuery,Asset.class);
    return asset.getContent();

the entity Asset.java 实体Asset.java

 @Entity
 @Table(name = "ASSET")
 @Document(indexName = "asset")
 public class Asset implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@NotNull
@Size(max = 50)
@Column(name = "name", length = 50, nullable = false)
private String name;

@Column(name = "domain")
private String domain;

//getter and setter

} }

test data 测试数据

  id;name;domain
   1;name1;TEST
   2;name2;TEST
   3;name3;DEMO
   4;name4;DEMO
   5;name5;TEST

Can anyone help me where is the error please? 任何人都可以帮助我,错误在哪里?

i think your query must be: 我认为您的查询必须是:

Json Version: Json版本:

{
  "query": {
     "filtered": {
        "query": {
           "query_string" : {
              "default_field" : "content",
              "query" : "this AND that OR thus"
            }
         },
         "filter": {
            "term": {
               "domain": "TEST"
            }
          }
       }
    }
 }

NativeSearchQueryBuilder Version: NativeSearchQueryBuilder版本:

QueryBuilder boolQueryBuilder = queryStringQuery(query);
FilterBuilder filterBuilder = termFilter("domain", "TEST");
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(QueryBuilders.filteredQuery(boolQueryBuilder, filterBuilder);

Page<Asset> asset = elasticsearchTemplate.queryForPage(searchQuery, Asset.class);
return asset.getContent();

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

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