Elasticsearch实战---------java查询
程序员文章站
2022-07-05 14:42:17
...
term (精确查询)
term query会去倒排索引中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword 、numeric、date。
term:查询某个字段里含有某个关键词的文档
//about字段中包含money
QueryBuilder term = QueryBuilders.termQuery("about", "money");
terms (精确查询)
terms:查询某个字段里含有多个关键词的文档
//about字段中包含money或cheapest
QueryBuilder terms = QueryBuilders.termsQuery("about", "friend","cheapest");
match(模糊查询 对搜索词进行分词处理)
match查询会先对搜索词进行分词,分词完毕后再逐个对分词结果进行匹配,因此相比于term的精确搜索,match是分词匹配搜索
QueryBuilder builder = QueryBuilders.matchQuery("interests", "changge");
前面提到match搜索会先对搜索词进行分词,对于最基本的match搜索来说,只要搜索词的分词集合中的一个或多个存在于文档中即可,例如,当我们搜索中国杭州,搜索词会先分词为中国和杭州,只要文档中包含搜索和杭州任意一个词,都会被搜索到
$curl -XGET http://localhost:9200/index/doc/_search?pretty -d
'{
"query": {
"match": {
"content": "中国杭州"
}
}
}
文档3正文中有杭州,文档2中有中国,因此搜索结果有两个,文档3中杭州出现两次,所以排在前面,结果如下:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 0.99999994,
"hits" : [ {
"_index" : "index",
"_type" : "doc",
"_id" : "4",
"_score" : 0.99999994,
"_source" : {
"content" : "杭州是一个美丽的城市,欢迎来到杭州",
"title" : "宣传",
"tags" : [ "旅游", "城市" ]
}
}, {
"_index" : "index",
"_type" : "doc",
"_id" : "2",
"_score" : 0.8838835,
"_source" : {
"content" : "中国是世界上人口最多的国家",
"title" : "中国",
"tags" : [ "中国", "人口" ]
}
} ]
}
}
match_phrase(模糊查询 对搜索词不进行分词处理)
使用matchPhraseQuery时,不会被分词器分词,而是直接以一个短语的形式查询,而如果你在创建索引所使用的field的value中没有这么一个短语(顺序无差,且连接在一起),那么将查询不出任何结果。
QueryBuilders.matchPhraseQuery("level", "INFO")
查询是否加.keyword的区别
term是精确查询,使用字段类型是keyword 这时查询不需要.keyword,term如果查询text类型一定查询不到,如果想要查询text类型 ,此时的查询就需要加上.keyword去查询
但是term查询text类型 需要在字段添加keyword映射,才能通过.keyword去查询
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
上一篇: PHP7.27: pdf
推荐阅读
-
java~springboot~ibatis数组in查询的实现
-
Elasticsearch实战系列(四)--索引数据简述
-
java-从 android 应用程序响应时间发送 php 查询到服务器
-
Java JDBC入门之八 : DAO设计模式重构查询方法 AND 使用BeanUtils工具类操作JavaBean
-
JAVA程序设计(20)-----查询信息的数据库代码
-
详解关于Java对MySQL进行查询修改以及连接的操作方法
-
Java实战(二)用户注册、登录接口
-
datatables 带查询条件java服务端分页处理实例
-
java操作mongodb基础(查询 排序 输出list)
-
Java虚拟机JVM优化实战的过程全记录