search搜索语句之结构化查询语句DSL

结构化查询语句DSL的使用,bool,filter查询等

新增数据集

curl -XPUT -H "Content-Type: application/json" 'localhost:9201/blog/article/7?pretty' -d '

{

  "title": "elk搭建日志采集系统",

  "content":"elk elasticsearch logstash kibana",

  "PV":18

}'

 

什么是query DSL

                   1、Domain Specific Language 领域特定语言

                   2、Elasticsearch提供了完整的查询DSL,基于JSON定义查询

                   3、用于构造复杂的查询语句

 

url查询(空格处理不当,会出问题)

curl -XPOST -H "Content-Type: application/json" 'http://localhost:9201/blog/article/_search' -d '{

    "query" : {

        "term" : { "title" : "elk" }

    }

}'      

         建议使用postman工具

                   post方式提交,增加http头信息

                   body里面选row格式,粘贴对应的dsl即可

 

bool查询入门  

                   {

                     "query": {

                       "bool": {

                         "must": [

                           { "match": { "title": "elk" } }

                         ],

                         "must_not": [

                           { "match": { "title": "小D" } }

                         ]

                       }

                     }

                   }

 

filter查询入门(filtered语法已经在5.0版本后移除了,在2.0时候标记过期,改用filter )

         参考地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/query-dsl-filtered-query.html

         {

           "query": {

             "bool": {

               "filter": {

                 "range": {

                   "PV": {

                     "gt": 15

                   }

                 }

               },

               "must": {

                 "match": {

                   "title": "ELK"

                 }

               }

             }

           }

         }

 

         总结:(官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html)

 

                   1、大部分filter的速度快于query的速度

                   2、filter不会计算相关度得分,且结果会有缓存,效率高

                   3、全文搜索、评分排序,使用query

                   4、是非过滤,精确匹配,使用filter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Elasticsearch 是一个搜索引擎,它使用类似于 SQL 的 Query DSL 语句,可以用来查询索引中的文档。例如,要查询标题中包含单词“搜索”的文档,可以使用如下语句: GET /_search { "query": { "match" : { "title" : "搜索" } } } ### 回答2: Elasticsearch是一个开源的分布式搜索和分析引擎,提供了丰富的搜索语句样例,用于对索引中的数据进行高效的搜索。以下是一些常见的Elasticsearch搜索语句样例: 1. 简单搜索:可以使用match查询来进行简单的全文搜索,如搜索包含特定关键词的文档。 ``` GET /index/_search { "query": { "match": { "field": "keyword" } } } ``` 2. 多字段搜索:使用multi_match查询可以对多个字段进行搜索,返回包含任何一个字段中包含关键词的文档。 ``` GET /index/_search { "query": { "multi_match": { "query": "keyword", "fields": ["field1", "field2"] } } } ``` 3. 短语搜索:使用match_phrase查询可以搜索包含完全匹配短语的文档。 ``` GET /index/_search { "query": { "match_phrase": { "field": "keyword example" } } } ``` 4. 范围搜索:使用range查询可以搜索某个字段在一定范围内的文档。 ``` GET /index/_search { "query": { "range": { "field": { "gte": 5, "lte": 10 } } } } ``` 5. 布尔搜索:使用bool查询可以组合多个查询条件进行复杂的逻辑搜索。 ``` GET /index/_search { "query": { "bool": { "must": [ { "match": { "field1": "keyword1" }}, { "match": { "field2": "keyword2" }} ], "must_not": { "match": { "field3": "keyword3" }}, "should": { "match": { "field4": "keyword4" }} } } } ``` 这些只是Elasticsearch搜索语句的一小部分样例,还有许多其他的搜索语句查询方式可供使用,以满足不同的搜索需求。 ### 回答3: Elasticsearch是一个基于Lucene的开源搜索引擎,可以处理大规模的结构和非结构数据,具有快速、分布式、可扩展的特点。以下是一些Elasticsearch搜索语句样例。 1. 匹配查询(match query):根据指定的字段进行全文检索,返回包含指定词条的文档。例如,搜索标题字段中包含关键词"搜索引擎"的文档: ``` GET /index/_search { "query": { "match": { "title": "搜索引擎" } } } ``` 2. 多字段查询(multi-match query):在多个字段中进行全文检索,返回包含指定词条的文档。例如,搜索标题和内容字段中包含关键词"搜索引擎"的文档: ``` GET /index/_search { "query": { "multi_match": { "query": "搜索引擎", "fields": ["title", "content"] } } } ``` 3. 精确匹配查询(term query):搜索指定字段中包含与搜索词完全匹配的文档。例如,搜索标签字段中包含"技术"的文档: ``` GET /index/_search { "query": { "term": { "tags": "技术" } } } ``` 4. 范围查询(range query):搜索指定字段中在指定范围内的值。例如,搜索价格在100到200之间的商品: ``` GET /index/_search { "query": { "range": { "price": { "gte": 100, "lte": 200 } } } } ``` 以上是一些常见的Elasticsearch搜索语句样例,通过这些语句可以实现灵活多样的搜索需求,帮助用户快速准确地检索到需要的文档或数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值