• Elasticsearch 全文搜索


    1,匹配查询(match)

    • match查询主要的应用场景是进行全文搜索;
    // 1,初始化数据
    DELETE /my_index 
    
    PUT /my_index
    { "settings": { "number_of_shards": 1 }} 
    
    POST /my_index/my_type/_bulk
    { "index": { "_id": 1 }}
    { "title": "The quick brown fox" }
    { "index": { "_id": 2 }}
    { "title": "The quick brown fox jumps over the lazy dog" }
    { "index": { "_id": 3 }}
    { "title": "The quick brown fox jumps over the quick dog" }
    { "index": { "_id": 4 }}
    { "title": "Brown fox brown dog" }
    
    
    // 2,match 单个词查询
    GET /my_index/my_type/_search
    {
      "query":{
        "match":{
          "title":"QUICK!"
        }
      }
    }
    
    
    // 3,match 多词查询
    GET /my_index/my_type/_search
    {
      "query":{
        "match":{
          "title":"BROWN DOG!"
        }
      }
    }
    
    // 3.1 operator 操作符,默认值为or
    GET /my_index/my_type/_search
    {
      "query":{
        "match":{
          "title":{
            "query":"BROWN DOG!",
            "operator":"and"
            
          }
        }
      }
    }
    
    // 3.2 minimum_should_match 最小匹配参数
    GET /my_index/my_type/_search
    {
      "query":{
        "match":{
          "title":{
            "query":"quick brown dog",
            "minimum_should_match": "75%"
            
          }
        }
      }
    }
    

    2,组合查询

    // 组合查询
    GET /my_index/my_type/_search
    {
      "query":{
        "bool":{
          "must":{"match":{"title":"quick"}},
          "must_not":{"match":{"title":"lazy"}},
          "should":[
            {"match":{"title":"brown"}},
            {"match":{"title":"dog"}}
            ]
        }
      }
    }
    
    // 备注:should语句,一个文档不必包含“brown”或“dog”这两个词项,但如果一旦包含,它的相关性会提高。
    
    // 控制精度(minimum_should_match)
    GET /my_index/my_type/_search
    {
      "query":{
        "bool":{
          "should":[
            {"match":{"title":"brown"}},
            {"match":{"title":"fox"}},
            {"match":{"title":"dog"}}
            ],
            "minimum_should_match": 2
        }
      }
    }
    

    3,查询语句提升权重

    // boost 控制查询语句的相对权重,默认值为1,大于1会提升一个语句的相对权重
    GET /_search
    {
        "query": {
            "bool": {
                "must": {
                    "match": {  
                        "content": {
                            "query":    "full text search",
                            "operator": "and"
                        }
                    }
                },
                "should": [
                    { "match": {
                        "content": {
                            "query": "Elasticsearch",
                            "boost": 3 
                        }
                    }},
                    { "match": {
                        "content": {
                            "query": "Lucene",
                            "boost": 2 
                        }
                    }}
                ]
            }
        }
    }
    

    4,控制分析

    // 1,新增字段,并配置分析器
    PUT /my_index/_mapping/my_type
    {
        "my_type": {
            "properties": {
                "english_title": {
                    "type":     "text",
                    "analyzer": "english"
                }
            }
        }
    }
    
    
    // 2,validate-query API 分析查询过程
    GET /my_index/my_type/_validate/query?explain
    {
      "query":{
        "bool":{
          "should":[
            {"match":{"title":"Foxes"}},
            {"match":{"english_title": "Foxes"}}
            ]
        }
      }
    }
    

    参考资料:
    -FORBIDDEN 12 index read-only allow delete (api)
    -全文检索

  • 相关阅读:
    Java高并发(1)
    Java基础知识之常见关键字(1)
    jQuery中attr()与prop()区别介绍
    win7下delphi中的help文档问题
    Delphi TMemo 可以显示、编辑多行文本
    TcxGrid
    Delphi学习手记——单引号和双引号的区别
    sql 系统表协助集合
    VCL安装有哪几种方法?
    sqlserver2008 服务器实例连接
  • 原文地址:https://www.cnblogs.com/linkworld/p/12030686.html
Copyright © 2020-2023  润新知