这里主要是一些简单的ElasticSearch的搜索功能,复杂的搜索,比如过滤,聚合等以后单独在写

1. 搜索全部

GET book/_search

直接搜索全部,下面是对搜索结果的详细介绍:默认情况下,是查询出来10条数据,并且按照score的由高到低顺序排列的(因为搜索全部,这里没有score,当条件搜索的时候,会出现。)

2. 单条件搜索

条件查询分为两类:

  • match:match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器,将查询语句分词之后去匹配含有分词之后词语的。
  • term:不进行分词,直接完全匹配查询。
  • 需要注意的是:如果你搜索的字段是keyword类型,那么无论match和term都是一样的,都不进行分词。
//match进行查询
GET book/novel/_search
{
"query": {
"match": {
"author": "美十与"
}
}
}
//term进行查询
GET book/novel/_search
{
"query": {
"term": {
"author": {
"value": "己平"
}
}
}
}

解释:查询,需要符合条件:author = “美十与”的结果。这里还有:match_all等其余的方法。

  其中 :match_all的是一个空查询,就是查询索引类型下的所有文档。可以查询出所有文档之后在进行过滤等。

3. 多条件查询

GET book/novel/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"wordCount": "8343705",
       "author": "123"
          }
}
],
"must_not": [
{
"match": {
"author": "天回"
}
}
]
}
}
}

其中:bool可以用来实现多条件查询,bool包含的属性如下:

  must:表示必须匹配的属性,匹配这些条件才能被包含进来

  must_not:表示不能匹配这些条件才能被包含进来。

  should :如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。

  filter :必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。

需要特别注意的是: match不支持多条件查询,会提示 [match] query doesn't support multiple fields, found [author] and [wordCount]"。

一个复杂查询的例子(未经验证)

{
"bool": {
"must": { "match": { "email": "business opportunity" }},
"should": [
{ "match": { "starred": true }},
{ "bool": {
"must": { "match": { "folder": "inbox" }},
"must_not": { "match": { "spam": true }}
}}
],
"minimum_should_match": 1
}
}

4. 排序,分页

GET book/novel/_search
{
"query": {
"match": {
"author": "天为回"
}
},
"from": 0,
"size":10,
"sort": [
{
"wordCount": {
"order": "desc"
}
}
]
}

其中:from:表示分页开始的条数(也是从0开始),size表示你要查询的数量。

  sort:排序的字段,根据哪个字段进行如何排序,上面例子:根据wordCount字段倒序排列。

ElasticSearch(五):简单的ElasticSearch搜索功能的更多相关文章

  1. 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  2. 四十八 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能

    Django实现搜索功能 1.在Django配置搜索结果页的路由映射 """pachong URL Configuration The `urlpatterns` lis ...

  3. Vue下简单分页及搜索功能

    最近利用Vue和element ui仿写了个小页面,记一哈分页和搜索功能的简单实现. 首页   emmmm..... 搜索框输入..... 搜索完成 数据是直接写在这里面的: cardPhoto:[ ...

  4. elasticsearch(七)java 搜索功能Search Request的介绍与使用

    目录 1,首先创建主搜索请求: 2,对主搜索请求进行参数设置 前端几节都是介绍的基于单个文档或着单个文档库的操作, 本节开始将介绍基于所有或指定的任何个数文档库的操作的api SearchReques ...

  5. 使用 Elasticsearch 实现博客站内搜索

    Reference:  http://www.open-open.com/lib/view/open1452046497511.html 一直以来,为了优化本博客站内搜索效果和速度,我使用 bing ...

  6. ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事)

    ElasticSearch 2 (9) - 在ElasticSearch之下(图解搜索的故事) 摘要 先自上而下,后自底向上的介绍ElasticSearch的底层工作原理,试图回答以下问题: 为什么我 ...

  7. ElasticSearch查询 第一篇:搜索API

    <ElasticSearch查询>目录导航: ElasticSearch查询 第一篇:搜索API ElasticSearch查询 第二篇:文档更新 ElasticSearch查询 第三篇: ...

  8. 04-springboot整合elasticsearch初识-简单增删改查及复杂排序,分页,聚合操作

        前面大概了解了一下elasticsearch的数据存储和数据的查询.现在学习一下,es的复杂操作.     官网相关文档地址:https://www.elastic.co/guide/en/e ...

  9. Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看

    一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...

随机推荐

  1. Cocoapods 报警告Automatically assigning platform ios with version 9.0 on target....

    Automatically assigning platform iOS with version 9.0 on target 你的工程名称 because no platform was speci ...

  2. Python mysql-SQL概要

    2017-09-05 20:10:58 一.SQL语句及其种类 SQL使用关键字,表名,列名等组合成一条语句来描述操作的内容.关键字是指那些含义或者使用方法是先已经定义好的英语单词.根据RDBMS赋予 ...

  3. Java读取xml

    首先将xml的格式展示出来,如下 <?xml version="1.0"?> <configuration> <connectionStrings n ...

  4. (转)HapMap简介

    1.人类基因组的HapMap和国际HapMap计划 (1)何谓HapMap HapMap是Haplotype Map 的简称,Haplo意为单一,在基因组中专指来自父母的一对染色体中的一条.Haplo ...

  5. windows下apache利用SSL来配置https

    第一步打开httpd.conf文件找到以下两个变量把注释去掉. #LoadModule ssl_module modules/mod_ssl.so (去掉前面的#号) #Include conf/ex ...

  6. hdu2087kmp

    一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?  Input输入中含有一些数据,分别是成对出现的花布条和 ...

  7. hdu-6301-贪心

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. HDOJ1005

    #include "iostream" using namespace std; int fun(int A,int B,int n) { ,y = ,z; || n == ) ; ...

  9. sql 智能提示

    依次打开SSMS—>工具—>选项—>文本编辑器—>Transact-SQL—>IntelliSense—>检查右侧窗体是否启用!!

  10. Eclipse修改已存在的SVN地址

    1.Window---->Show View---->Other...