经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Elasticsearch » 查看文章
Elasticsearch查询之Term?Query示例解析
来源:jb51  时间:2023/4/24 8:52:27  对本文有异议

Term Query

Term Query是一种最基本的查询方式,它用于在Elasticsearch中查询一个字段中包含指定关键词的文档,与MySQL中的等值查询类似。使用Term Query时,可以对字段进行完全匹配,且区分大小写。

基本语法

  1. GET /{index}/_search
  2. {
  3. "query": {
  4. "term": {
  5. "{field}": "{value}"
  6. }
  7. }
  8. }

其中,{index}表示查询的索引名称,{field}表示需要查询的字段,{value}表示需要匹配的值。

Java代码写法

  1. // TODO 省略导入包
  2. import java.io.IOException;
  3. public class TermQueryExample {
  4. public static void main(String[] args) throws IOException {
  5. RestHighLevelClient client = new RestHighLevelClient(
  6. RestClient.builder(
  7. new HttpHost("localhost", 9200, "http")));
  8. SearchRequest searchRequest = new SearchRequest("my_index");
  9. // 这里的searchSourceBuilder 相当于 query:{}
  10. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  11. // query:{term:{"field_name":"field_value"}}
  12. searchSourceBuilder.query(QueryBuilders.termQuery("field_name", "field_value"));
  13. searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
  14. searchRequest.source(searchSourceBuilder);
  15. // 执行查询
  16. SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
  17. // TODO: 解析搜索结果
  18. client.close();
  19. }
  20. }

Terms-匹配多个值

term查询只能用于匹配该属性的单个值,若想匹配多个值,可以用terms查询

基本语法

  1. GET /{index}/_search
  2. {
  3. "query": {
  4. "terms": {
  5. "{field}": [
  6. "{value1}",
  7. "{value2}",
  8. "{value3}"
  9. ]
  10. }
  11. }
  12. }

Java写法

  1. SearchRequest searchRequest = new SearchRequest("index");
  2. SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
  3. // 注意这里是使用termsQuery("field",value1,value2)
  4. TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", "value1", "value2", "value3");
  5. searchSourceBuilder.query(termsQueryBuilder);
  6. searchRequest.source(searchSourceBuilder);
  7. SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

Term查询可配置的其他参数

Term Query还有其他的一些设置参数,比如:

  • boost参数:可以为查询结果设置权重,提高或降低查询结果的得分,影响查询结果的排名。
  • case_insensitive参数:设置是否对查询进行大小写不敏感的匹配。
  • rewrite参数:控制查询的rewrite策略,主要用于控制查询性能,缓存占用等方面。
  • index参数:控制是否在查询时使用倒排索引,以及使用哪些倒排索引进行查询。

总结

使用Term Query时需要注意以下几点:

  • 仅匹配完全匹配的关键字。
  • 字段必须是不分词的。
  • 通常情况下,不需要将关键字转换为小写字母,因为Term Query不会将关键字转换为小写字母。

总之,Term Query非常适合用于对某个字段进行精确匹配的场景。如果您想进行模糊匹配或全文搜索,请考虑使用Match Query。

以上就是Elasticsearch查询之Term Query示例解析的详细内容,更多关于Elasticsearch Term查询的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号