es查询-词条检索

可以使用term-level queries根据结构化数据中的精确值查找文档。结构化数据的值包括日期范围、IP地址、价格或产品ID。
与全文查询不同,term-level queries不分析搜索词。相反,词条与存储在字段级别中的术语完全匹配。

 

词条搜索(term query)
term 查询用于查询指定字段包含某个词项的文档

POST /book/_search
{
"query": {
"term" : { "name" : "solr" }
}
}

词条集合搜索(terms query)
terms 查询用于查询指定字段包含某些词项的文档

GET /book/_search
{
"query": {
"terms" : { "name" : ["solr", "elasticsearch"]}
}
}

范围搜索(range query)
gte:大于等于
gt:大于
lte:小于等于
lt:小于
boost:查询权重:在多条件组合查询时,可以手动控制每个条件的比重

GET /book/_search
{
"query": {
"range" : {
"price" : {
"gte" : 10,
"lte" : 200,
"boost" : 2.0
}
}
}
}

GET book/_search
{
"query": {
"range" : {
"timestamp" : {
"gte": "18/08/2020",
"lte": "2021",
"format": "dd/MM/yyyy||yyyy"
}
}
}
}

不为空搜索(exists query)
查询指定字段值不为空的文档。相当 SQL 中的 column is not null

GET /book/_search
{
"query": {
"exists" : { "field" : "price" }
}
}

词项前缀搜索(prefix query)
GET /book/_search
{ "query": {
"prefix" : { "name" : "so" }
}
}

正则搜索(regexp query)
regexp允许使用正则表达式进行term查询.注意regexp如果使用不正确,会给服务器带来很严重的性能压力。比如.*
开头的查询,将会匹配所有的倒排索引中的关键字,这几乎相当于全表扫描,会很慢。因此如果可以的话,最好在使
用正则前,加上匹配的前缀。

GET /book/_search
{
"query": {
"regexp":{
"name": "s.*"
}
}
}
GET /book/_search
{
"query": {
"regexp":{
"name":{
"value":"s.*",
"boost":1.2
 }
}
}
}

模糊搜索(fuzzy query)

GET /book/_search
{
"query": {
"fuzzy" : { "name" : "sol" }
}
}
GET /book/_search
{
"query": {
"fuzzy" : { "name" : "so" }
}
}


GET /book/_search
{
"query": {
"fuzzy" : {
"name" : {
"value": "so"
"fuzziness": 2
}
}
}
}


GET /book/_search
{
"query": {
"fuzzy" : {
"name" : {
"value": "sorl"
}
}
}
}


POST /book/_search
{
"query": {
"fuzzy": {
"name": {
"value": "osrl",
"fuzziness":2
}
 }
}
}

ids搜索(id集合查询)
GET /book/_search
{
"query": {
"ids" : {
"values" : ["1", "3"]
}
}
}

 

posted @ 2021-11-30 21:49  Wind_LPH  阅读(619)  评论(0编辑  收藏  举报