java term_[ElasticSearch]Java API 之 词条查询(Term Level Query)

本文介绍了如何使用ElasticSearch的Java API进行精确的Term查询,多词条Terms查询,范围查询,存在查询,前缀查询,通配符查询,正则表达式查询以及模糊查询(Fuzzy Query)。通过示例代码详细展示了各种查询方式的使用,包括匹配单个词条、多个词条、数值和日期范围,以及处理拼写错误的情况。
摘要由CSDN通过智能技术生成

1. 词条查询(Term Query)

词条查询是ElasticSearch的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条。term

查询 会查找我们设定的准确值。term 查询本身很简单,它接受一个字段名和我们希望查找的值。

下面代码查询将匹配 college 字段中含有"California"一词的文档。记住,词条查询是未经分析的,因此需要提供跟索引文档中的词条完全匹配的词条。请注意,我们使用小写开头的california来搜索,而不是California,因为California一词在建立索引时已经变成了california(默认分词器)。

/**

publicstaticvoidtermQuery(Clientclient,Stringindex,Stringtype){

// Query

TermQueryBuildertermQueryBuilder =QueryBuilders.termQuery("country","AWxhOn".toLowerCase());

// Search

SearchRequestBuildersearchRequestBuilder =client.prepareSearch(index);

.setTypes(type);

.setQuery(termQueryBuilder);

// 执行

SearchResponsesearchResponse =searchRequestBuilder.get();

// 结果

(searchResponse);

}

2. 多词条查询(Terms Query)

词条查询(Term Query)允许匹配单个未经分析的词条,多词条查询(Terms Query)可以用来匹配多个这样的词条。只要指定字段包含任一我们给定的词条,就可以查询到该文档。

下面代码得到所有在 country 字段中含有 “德国” 或 "比利时" 的文档。

/**

publicstaticvoidtermsQuery(Clientclient,Stringindex,Stringtype){

// Query

TermsQueryBuildertermsQueryBuilder =QueryBuilders.termsQuery("country","比利时","德国");

// Search

SearchRequestBuildersearchRequestBuilder =client.prepareSearch(index);

.setTypes(type);

.setQuery(termsQueryBuilder);

// 执行

SearchResponsesearchResponse =searchRequestBuilder.get();

// 结果

(searchResponse);

}

输出结果:

.sjf.open.api.QueryAPI-----------QueryAPIid 9score 0.4898842source {country=比利时,name=阿扎尔,club=切尔西俱乐部}

.sjf.open.api.QueryAPI-----------QueryAPIid 4score 0.39103588source {country=德国,name=穆勒,club=拜仁慕尼黑俱乐部}

.sjf.open.api.QueryAPI-----------QueryAPIid 1score 0.25427115source {country=比利时,name=德布劳内,club=曼城俱乐部}

3. 范围查询(Range Query)

范围查询使我们能够找到在某一字段值在某个范围里的文档,字段可以是数值型,也可以是基于字符串的。范围查询只能针对单个字段。

方法:

(1)gte() :范围查询将匹配字段值大于或等于此参数值的文档。

(2)gt() :范围查询将匹配字段值大于此参数值的文档。

(3)lte() :范围查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值