Elaticsearch(六)----用请求体传递请求参数

一.语法格式

GET 索引名/_search
{
“command”:{ “parameter_name” : “parameter_value”}
}

1.查询所有的数据

GET 索引名/_search
{
   "query" : { "match_all" : {} }
}

2.条件 搜索(对条件进行拆词)

GET 索引名/_search
{
  "query": {
    "match": {
      "字段名": "搜索条件"
    }
  }
}

3.短语搜索(phrase search,对条件不拆词)

短语检索。要求查询条件必须和具体数据完全匹配才算搜索结果。其特征是:
1.对搜索条件进行拆词
把拆词当作一个整体,整体去索引(所以是存储内容被拆词后的结果)中匹配,必须严格匹配

GET 索引名/_search
{
  "query": {
    "match_phrase": {
      "字段名": "搜索条件"
    }

4.范围查询

GET 索引名/类型名/_search
{
  "query" : {
    "range" : {
      "字段名" : {
        "gt" : 搜索条件1, 
"lte" : 搜索条件2
      }
    }
  }
}

5.多条件复合查询(bool)

GET 索引名/类型名/_search
{
  "query": {
    "bool": {
      "must": [ #数组中的多个条件必须同时满足
        {
          "range": {
            "字段名": {
              "lt": 条件
            }
          }
        }
      ],
      "must_not":[ #数组中的多个条件必须都不满足
        {
          "match": {
            "字段名": "条件"
          }
        },
        {
          "range": {
            "字段名": {
              "gte": "搜索条件"
            }
          }
        }
]
      "should": [# 数组中的多个条件有任意一个满足即可。
        {
          "match": {
            "字段名": "条件"
          }
        },
        {
          "range": {
            "字段名": {
              "gte": "搜索条件"
            }
          }
        }
      ]
    }
  }
}

6.排序

GET 索引名/类型名/_search
{
  "query": {
    [搜索条件]
  },
  "sort": [
    {
      "字段名1": {
        "order": "asc"
      }
    },
    {
      "字段名2": {
        "order": "desc"
      }
    }
  ]
}

7.分页

GET 索引名称/_search
{
  "query":{
    "match_all":{}
},
"from": 起始下标,
"size": 查询记录数
}

8.高亮highlight display

GET 索引名/_search
{
  "query": {
    "match": {
      "字段名": "条件"
    }
  },
  "highlight": {
    "fields": {
      "要高亮显示的字段名": {
        "fragment_size": 5, #每个分段长度,默认20
        "number_of_fragments": 1 #返回多少个分段,默认5
      }
    },
    "pre_tags": ["前缀"], 
    "post_tags": ["后缀"] 
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设您要实现一个 Elasticsearch 的范围查询,可以使用 Elasticsearch 的 Java 客户端 API。以下是一个简单的范围查询示例: ```java import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.transport.client.PreBuiltTransportClient; import java.net.InetAddress; import java.net.UnknownHostException; public class EsRangeQueryExample { public static void main(String[] args) throws UnknownHostException { TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); // 设置 Elasticsearch 的地址和端口 QueryBuilder queryBuilder = QueryBuilders.rangeQuery("age").gte(100).lte(1000); // 创建范围查询条件 SearchResponse response = client.prepareSearch("index_name").setTypes("type_name") .setQuery(queryBuilder).execute().actionGet(); // 发送查询请求并获取响应结果 SearchHits hits = response.getHits(); // 获取查询结果集 for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); // 打印查询结果 } client.close(); // 关闭 Elasticsearch 客户端 } } ``` 在上面的代码中,`QueryBuilder` 对象使用 `QueryBuilders.rangeQuery` 方法创建一个范围查询条件,并指定查询的字段和范围。`client.prepareSearch` 方法设置了查询的索引和类型,并将查询条件传递给 `setQuery` 方法。执行查询后,可以使用 `SearchHit` 对象访问查询结果的每个文档,并使用 `getSourceAsString` 方法获取文档的 JSON 格式字符串。最后,使用 `client.close` 方法关闭 Elasticsearch 客户端连接。 需要注意的是,这只是一个简单的示例,实际的代码可能需要根据具的需求进行更改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值