您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

Elasticsearch DSL语法

时间:2022-09-21 14:02:08  来源:今日头条  作者:51编程
  1. 全局搜索
GET /shops_index,goods_index/_search  //多索引搜索用逗号隔开或者 /_all/_search、/_search
{
  "query": {
    "multi_match": {
      "query": "口腔",  // 如果查询字段 *口腔* 则fileds 必须["goods_title.keyword^10","goods_subtitle.keyword^7"]  ^1表示权重
      "fields": ["goods_title", "title"]
    }    
  }
  "_source": ["goods_title","title"] //查询字段
}
  1. match_all
{
    "query":{
        "match_all":{} //查询所有
    }
}
  1. 分页查询
{
  "query": {
      "match_all":{} //查询所有
  },
  "from":0,
  "size":10
}
  1. match_phrase

查询同一个字段中几个词,可以跳过其他词,slop表示可以跳过的最大词数

{
  "query": {
     "match_phrase": {
          "description": "He is",
          "slop":100
    }
  }
}
  1. term 单个条件查询

(不会分词,精确匹配)一句话解释: elasticsearch 里默认的IK分词器是会将每一个中文都进行了分词的切割,所以你直接想查一整个词,或者一整句话是无返回结果的。查询不是中文的字符串能查不出来

{
  "query": {

      "term": {
        "category_id": "10052", // 能查出数据
        //"goods_title" : "体检", 查不出来因为中文分词了,除非就一个汉字
      }

  }
}
  1. terms 多个关键字查询
"query": {
    "terms": {
        "channel_id": [102,101]
    }
}
  1. match 条件查询

会分词,全文检索

{
  "query": {
    "match": {
      "goods_title": "体检"
    }
  }
}

{
  "query": {
    "match": {
      "goods_title": {
        "query": "体检",
        "operator": "and" // or 表示只要有一个分词就可以查询出来,and 表示必须包含分出来的所有字段
      }
    }
  }
}
  1. multi_match 多个字段检索
{
  "query": {
    "multi_match": {
      "query": "口腔",
      "fields": ["goods_title","goods_subtitle"]
    }
  }
}
  1. exits 检索字段存在
{
  "query": {
    "exists": {
      "field": "goods_title"
    }
  }
}
  1. bool 检索

must :多个条件全部要满足;should:或者的意思,满足一个即可;must_not:除了满足所有条件剩下的数据

{
  "query": {
    "bool": {
      "must": [
          {
              "multi_match":{
                  "query":"口腔",
                  "fields":["goods_title","goods_subtitle"]
              }
          },
          {
              "term":{
                  "age":19              
              }          
          },
          {
              "terms": {
                "brand_name.keyword": ["白敬宇"] //类似in查询
              }
          }
      ],
      "must_not":[
          {
              "terms": {
                 "goods_id": [1,2,3]
}
  }      
      ]
    }
  }
}
  1. post_filter 对结果过滤
{
  "query": {
    "match": {
      "goods_title": "口腔"
    }
  },
  "post_filter": {
    "range": {
      "selling_price": {
        "gte": 1000,
        "lte": 1500
      }
    }
  }
}
  1. sort 排序
{
  "query": {
    "match": {
      "goods_title": "口腔"
    }
  },
  "post_filter": {
    "range": {
      "selling_price": {
        "gte": 1000,
        "lte": 2000
      }
    }
  },
  "sort": [
    {
      "selling_price": {
        "order": "asc"
      }
    }
  ], 
  "_source": ["selling_price"]
}
  1. 修改setting

注意:修改setting需要先关闭所以,然后再开启索引

$es->indices()->close(['index' => $index]);
$params_setting = [
    'index' => $index,
    'body'  => [
        'settings' => [
            'analysis' => [
                'analyzer' => [
                    'ik_pinyin_analyzer' => [
                        'type'      => 'custom',
                        'tokenizer' => 'ik_max_word',
                        'filter'    => ["my_pinyin", "word_delimiter"],
                    ]
                ],
                'filter'   => [
                    "my_pinyin" => [
                        "type"         => "pinyin",
                        "first letter" => "prefix",
                        "padding_char" => " "
                    ]
                ]
            ]
        ]
    ]
];
$es->indices()->putSettings($params_setting);
$es->indices()->open(['index' => $index]);
  1. 修改mApping
PUT fit_goods_index/_mapping
{
  "properties":{
       "search_title":{
         "type":"text"
       }
   }
}


// php代码
$params = [
    'index' => $index,
    'body'  => [
        '_source'    => [
            'enabled' => true
        ],
        'properties' => [
            'location'   => [
                'type'             => 'geo_point',
                'ignore_malformed' => true
            ],
            'completion' => [
                'type'     => 'completion',
                'analyzer' => 'ik_pinyin_analyzer',
                'fields'   => [
                    "key" => [
                        "type" => "keyword"
                    ],
                ],
                "contexts" => [
                    [
                        "type" => "category",
                        "name" => "plan_id"
                    ]
                ]
            ],
        ]
    ]
];
$es->indices()->putMapping($params);
  1. 范围搜索
GET /goods_index/_search
{
  "query":{
    "bool": 
      {
        "must":[
          {
            "query_string":{
              "query":"双重好礼",
              "fields": ["goods_title^2"]
            }
          }  
        ]
      }
  },
  "_source": ["goods_title","goods_subtitle","selling_price"],
 "post_filter": {
    "range": {
      "selling_price": {
        "gte": 0,
        "lte": 108
      }
    }
  }
}
  1. in 查询
GET /goods_index/_search
{
  "query":{
    "bool": 
      {
        "must":[
          {
            "query_string":{
              "query":"双重好礼",
              "fields": ["goods_title"]
            }
          },
          {
            "terms": {
                "specs_type": ["more"]
            }
          }
        ]
      }
  }
}

NOT IN 查询

GET /goods_index/_search
{
  "query":{
    "bool": 
      {
        "must":[
          {
            "query_string":{
              "query":"双重好礼",
              "fields": ["goods_title"]
            }
          }
        ],
        "must_not":[
            {
              "terms": 
                {
                    "specs_type": ["more"]
                }
            }
        ]
      }
  }
} 


Tags:Elasticsearch   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
全局搜索GET /shops_index,goods_index/_search //多索引搜索用逗号隔开或者 /_all/_search、/_search{ "query": { "multi_match": { "query": "口腔", // 如...【详细内容】
2022-09-21  Tags: Elasticsearch  点击:(0)  评论:(0)  加入收藏
Elasticsearch设计了Ingest特性,在数据写入前做一些前置的过滤、转换等简单的数据处理逻辑,能支持Logstash的大多数常用场景,在5.0版本中发布。为数据的采集和处理提供了一种新...【详细内容】
2022-09-01  Tags: Elasticsearch  点击:(35)  评论:(0)  加入收藏
今天给大家讲讲 SpringBoot 框架 整合 Elasticsearch 实现海量级数据搜索。一、简介在上篇ElasticSearch 文章中,我们详细的介绍了 ElasticSearch 的各种 api 使用。实际的项...【详细内容】
2022-07-15  Tags: Elasticsearch  点击:(65)  评论:(0)  加入收藏
在单台服务器上部署多个节点,一般主要针对的是学习阶段,正式环境一台服务器只会部署一个节点,以实现分布式效果。下面是在单台服务器部署两个节点的方法。1、将安装好的elastic...【详细内容】
2022-07-06  Tags: Elasticsearch  点击:(93)  评论:(0)  加入收藏
ElasticSearch的简介ElasticSearch:智能搜索,分布式的搜索引擎是ELK的一个组成,是一个产品,而且是非常完善的产品,ELK代表的是:E就是ElasticSearch,L就是Logstach,K就是kibanaE:Eals...【详细内容】
2022-07-06  Tags: Elasticsearch  点击:(62)  评论:(0)  加入收藏
Elasticsearch的数据来自Mysql数据库中,所以当我们的MySQL发生改变时,Elasticsearch也要跟着改变,这时候我们的es的数据就要和mysql同步了同步实现思路常见的数据同步方案有三...【详细内容】
2022-06-30  Tags: Elasticsearch  点击:(50)  评论:(0)  加入收藏
介绍Spring boot整合elastic search 7.9.1实现全文检索。主要包含以下特性: 全文检索的实现主要包括构建索引、高级搜索、聚集统计、数据建模四个模块; 使用 elasticsearch-re...【详细内容】
2022-05-30  Tags: Elasticsearch  点击:(113)  评论:(0)  加入收藏
由于近期在公司内部做了一次 Elasticsearch 的分享,所以本篇主要是做一个总结,希望通过这篇文章能让读者大致了解 Elasticsearch 是做什么的以及它的使用和基本原理。 生活中...【详细内容】
2022-04-12  Tags: Elasticsearch  点击:(96)  评论:(0)  加入收藏
Elasticsearch 集群,以及集群中的节点(Node),如图所示,一个方块代表一个节点。 在一个或者多个节点之间,多个绿色小方块组合在一起形成一个ElasticSearch的索引。 在一个索引中,分...【详细内容】
2022-03-11  Tags: Elasticsearch  点击:(266)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的 Easy-Es是一款简化ElasticSearch搜索引擎操作的开源框...【详细内容】
2022-02-28  Tags: Elasticsearch  点击:(882)  评论:(0)  加入收藏
▌简易百科推荐
全局搜索GET /shops_index,goods_index/_search //多索引搜索用逗号隔开或者 /_all/_search、/_search{ "query": { "multi_match": { "query": "口腔", // 如...【详细内容】
2022-09-21  51编程  今日头条  Tags:Elasticsearch   点击:(0)  评论:(0)  加入收藏
嵌入式Linux开发中,有时候为了定位问题,需要查看某个进程的各个线程的运行情况。例子multi_thread.c:左右滑动查看全部代码>>>#define _GNU_SOURCE#include <pthread.h>#includ...【详细内容】
2022-09-21  嵌入式开发卡贝  今日头条  Tags:线程   点击:(5)  评论:(0)  加入收藏
工作中又用到lst文件去定位一些问题,因此突然又对这个文件产生了兴趣(因为之前几次也查过百度,苦于一直没找到直接的方法),这次就是先请教了工作的前辈,然后又整合了各方资料,总算...【详细内容】
2022-09-16  IT狼  今日头条  Tags:gcc   点击:(14)  评论:(0)  加入收藏
一 if语句的格式if 条件then执行语句fi注意,最后必须用fi来闭合。无需使用{ }来包裹。if then有两种写法,同一行时,必须有分号。独占一行时不用分号 如:同一行if [[ $a > $b ]]...【详细内容】
2022-09-16  留住此刻  今日头条  Tags:shell   点击:(15)  评论:(0)  加入收藏
GD32 虚拟串口通讯速度测试硬件说明: MCU: GD32C103 120M,128K,32k RAM. 输入:USB 5V. OBD功能口定义:OBD(2,10)VPWM、OBD 7(K线)、OBD 6(CAN H)、OBD 14(CAN L)、OBD 15(L...【详细内容】
2022-09-14  siyuanOBD  今日头条  Tags:虚拟串口   点击:(20)  评论:(0)  加入收藏
通往开源库 Terminus 的曲折路径。在生物学中,像鳄鱼这样的动物有时被称为活化石,因为它们似乎与过去地质层中发现的标本几乎没有什么不同。计算机技术有一些自己的活化石。终...【详细内容】
2022-09-13  互联网资讯看板   网易号  Tags:Swift   点击:(20)  评论:(0)  加入收藏
本文分享自华为云社区《AnimeGANv2 照片动漫化:如何基于 PyTorch 和神经网络给 GirlFriend 制作漫画风头像?【秋招特训】-云社区-华为云》,作者:白鹿第一帅 。前言将现实世界场...【详细内容】
2022-09-13    华为云开发者联盟  Tags:PyTorch   点击:(16)  评论:(0)  加入收藏
连接器,是把目标文件连接成可执行文件或动态库的工具。它是将高级语言代码转化成二进制程序的最后一步。编译之后的目标文件里,函数和全局变量的地址并不是真实内存地址,而是一...【详细内容】
2022-09-12  底层技术栈  今日头条  Tags:连接器   点击:(13)  评论:(0)  加入收藏
对于许多公司而言,在线提供服务不仅仅是一种营销趋势。这为企业带来了新的机遇,使他们能够快速扩大客户群、扩展到新市场并增加收入。软件开发人员也开始认识到在线迁移的价值...【详细内容】
2022-09-12  qaseven   网易号  Tags:SaaS   点击:(17)  评论:(0)  加入收藏
此文主题和脉络结构如下: Cookie 和 SessionHTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和...【详细内容】
2022-09-12  cxuan  今日头条  Tags:Cooke   点击:(14)  评论:(0)  加入收藏
站内最新
站内热门
站内头条