网站联盟平台,做 网站 技术支持 抓获,合肥市建设工程合同备案网站,wordpress边框ES中提供了一种强大的检索数据方式#xff0c;这种检索方式称为Query DSL#xff0c;这种方式的丰富查询语法让ES检索变得更强大#xff0c;更简洁。
1.常见查询
1.1查询所有[match_all]
match_all关键字#xff1a;返回索引中的全部文档。 GET /products/_search { 这种检索方式称为Query DSL这种方式的丰富查询语法让ES检索变得更强大更简洁。
1.常见查询
1.1查询所有[match_all]
match_all关键字返回索引中的全部文档。 GET /products/_search { query: { match_all: {} } } 1.2term基于关键词查询
注意文档信息存储是按照字段的类型去分词以分词后的结果来存储的。
1.在ES中除了text类型会分词其余类型均不分词(如keyword、Integer、double、date、boolean)其完整的整个数据就是一个关键字/词。
2.在ES中默认使用的是标准分词器中文是单字分词英文是单词分词。 GET /products/_search { query: { term: { description: { #字段 value: 很 } } } } 1.3range范围查询 GET /products/_search { query: { range: { price: { #字段 gte: 10, #gt表示,gte表示 lte: 20 #lt表示,lte表示 } } } } 1.4prefix前缀查询 1.5wildcard查询
?可以匹配一个字符而*可以匹配多个字符 1.6多id查询[ids]
用一组id获取多个对应的文档 GET /products/_search { query: { ids: { values: [1,2] } } } 1.7模糊查询[fuzzy]
fuzzy关键字用来模糊查询含有指定关键字的文档 注意fuzzy模糊查询 最大模糊错误必须在0-2之间 搜索关键词长度为2不允许存在模糊 搜索关键词长度为3-5允许一次模糊 搜索关键词长度大于5允许最大两次模糊
1.8布尔查询[bool]
bool关键字用来组合多个条件实现复杂查询 must相当于同时成立 should相当于||成立一个就行 must_not相当于不能满足任何一个 2.多字段查询[multi_match] 注意多字段查询时query中的查询语句会根据fields中字段的类型先去分词之后再去查询如果该字段不分词就会将整体作为条件进行查询。
比如先按照title来说因为keyword类型是不分词的所以会将不是整体作为title的条件去查那肯定是查不到记录的。然后再看description因为是text类型的所以会分词先分为不和是然后将这两个词分别作为description的条件去查就能查到这一条记录。
3.默认字段分词查询[query_string]
就是先将查询条件按照设定的默认字段类型去分词分完词后作为字段的条件去查询。 因为title的类型keyword不分词所以会直接将库迪作为条件去title中查询那肯定是查询不到的。 因为description的类型是text所以要分词先将查询条件我是很分为我、是、很。在分别作为条件去description中查询可以查询出来两条结果。
4.高亮显示highlight
注意高亮只能用于可以分词的字段即text。 GET /products/_search { query: { query_string: { default_field: description, query: 我是很 } }, highlight: { pre_tags: [span stylecolor:red;], #开始标签 post_tags: [/span], #结束标签 require_field_match: false, #开启多字段高亮 fields: { *:{} } } } 5.返回条数等待[size]
size指定查询结果中返回指定条数。默认返回值10条。 GET /products/_search { query:{ match_all:{} }, size:5 } 6.分页查询[from]
from用来指定起始返回位置和size关键字连用可实现分页效果。 GET /products/_search { query:{ match_all:{} }, from:0 size:5, } 7.指定字段排序[sort] GET /products/_search { query:{ match_all:{} }, sort:[ { price:{ order:desc } } ] } 8.返回指定字段
_socre是一个数组在数组中用来指定展示哪些字段。 GET /products/_search { query:{ match_all:{} }, _source:[title,description] }