Es查询(模糊,精确,多条件《模糊精确多条件查询》),修改,编辑,删除

----------------------------------------------配置文件jar-----------------------------------------------------------

<!-- ES -->


<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.2.2</version>
</dependency>
<!-- json -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.8.5</version>
</dependency>
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.21.0-GA</version>
</dependency>
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.9</version>
</dependency>
<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.3.1.3</version>
</dependency>
<dependency>
    <groupId>com.cn21</groupId>
    <artifactId>Time-NLP</artifactId>
    <version>1.0.1</version>
</dependency>

《------------------------模糊精确多条件查询------------------》

must :  相当于 MySQL and  should : 相当于MySQL or (效率低)

setExplain(true)  匹配顺序

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();  
        boolQueryBuilder.must(QueryBuilders.wildcardQuery("name", "*豆鼓焗带鱼*")).must(termQuery("foodType", "套餐"));
SearchResponse response1 = EsUtils.getClient()
.prepareSearch("food")
.setTypes("_doc")
.setQuery(boolQueryBuilder)
.setFrom(Integer.parseInt("0"))
.setSize(Integer.parseInt("10"))
.setExplain(true)    
                .execute()    
                .actionGet();
for(SearchHit hit:response1.getHits().getHits()){
System.out.println(hit.getSourceAsString());

}

《---------------------编辑----------------------

UpdateRequest updateRequest = new UpdateRequest();

updateRequest.index("food2");
updateRequest.type("_doc");
updateRequest.id("cAjpPmMBFth1dx0K4mIh");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("name", "你好李四").endObject());

client.update(updateRequest).get();

             

新建

 

UpdateRequest updateRequest = new UpdateRequest();

updateRequest.index("food2");
updateRequest.type("_doc");
updateRequest.id("cAjpPmMBFth1dx0K4mIh");
updateRequest.doc(XContentFactory.jsonBuilder().startObject().field("name", "你好李四").endObject());

client.update(updateRequest).get();

                

《删除

 

EsUtils.delete(indexName, type, id);

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RestHighLevelClient 是 Elasticsearch 官方提供的 Java 客户端,它可以用来与 Elasticsearch 进行交互,包括索引数据、搜索数据等。在 RestHighLevelClient 中,可以使用 QueryBuilder 对象来构建查询语句。 要实现同时多字段模糊查询精确查询,可以使用 BoolQueryBuilder 对象来组合多个查询条件。例如,以下代码展示了如何同时在多个字段中进行模糊查询精确查询: ``` BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.must(QueryBuilders.termQuery("fieldName1", "exactValue1")); boolQueryBuilder.should(QueryBuilders.matchQuery("fieldName2", "fuzzyValue1")); boolQueryBuilder.should(QueryBuilders.matchQuery("fieldName3", "fuzzyValue2")); ``` 在上面的代码中,`boolQueryBuilder` 对象使用了 `must` 方法来添加精确查询条件,而使用了 `should` 方法来添加多个模糊查询条件。其中,`fieldName1` 表示精确匹配的字段名,`exactValue1` 表示精确匹配的值;`fieldName2` 和 `fieldName3` 表示模糊匹配的字段名,`fuzzyValue1` 和 `fuzzyValue2` 表示模糊匹配的值。 值得注意的是,使用 `should` 方法添加的查询条件是或的关系,即只要满足其中一个条件就可以匹配成功。因此,如果需要同时满足多个模糊查询条件,可以将它们都添加到 `must` 方法中,像下面这样: ``` BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); boolQueryBuilder.must(QueryBuilders.termQuery("fieldName1", "exactValue1")); boolQueryBuilder.must(QueryBuilders.matchQuery("fieldName2", "fuzzyValue1")); boolQueryBuilder.must(QueryBuilders.matchQuery("fieldName3", "fuzzyValue2")); ``` 这样就可以同时满足多个查询条件了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值