zoukankan      html  css  js  c++  java
  • 一个Elasticsearch嵌套nested查询的实例

    创建索引和数据准备

    PUT course
    PUT course/_mapping/course
    {
    
          "properties": {
            "course":{
              "type": "nested"
              , "properties": {
                    "key1": {
                      "type": "text",
                      "analyzer": "ik_max_word"
                      },
                    "key2": {
                      "type": "text",
                      "analyzer": "ik_max_word"
                    },
                    "course_score": {
                    "type": "long"
                    }
              }
            },
              "course_name": {
                "type": "text"
                , "analyzer": "ik_max_word"
              },
              "course_id": {
                "type": "long"
              }
          }
    }
    PUT course/course/1
    {
      "course":[
        {
         "key1":"语文,高一,高二,高三",
         "key2":"高考作文",
         "course_score":15
        },
        {
          "key1":",语文,高二",
          "key2":"语文高考",
          "course_score":9
        },
        {
          "key1":",努力,学习",
          "key2":"高考",
          "course_score":9
        }
      ],
      "course_name":"语文高考基础题满分策略",
      "course_id":13
    }
    
    PUT course/course/2
    {
      "course":[
        {
        "key1":",其他,高一,高二,高三",
        "key2":"鲁林希",
        "course_score":21
        },
        {
        "key1":",其他,高一",
        "key2":"高考",
        "course_score":11
        },
        {
        "key1":",其他,高二,高三",
        "key2":"高考",
        "course_score":2
        }
      ],
      "course_name":"师兄师姐来帮忙-方法篇",
      "course_id":220
    }
    
    PUT course/course/3
    {
      "course":[
        {
        "key1":",其他,高一,高三",
        "key2":"高考",
        "course_score":21
        }
      ],
      "course_name":"师兄师姐来帮忙-自招全流程",
      "course_id":221
    }

    查询语句实例

    GET course/course/_search
    {
      
      "query": {
        "function_score": {
          "query": {
            "bool": {
              "must": [
                {
                  "nested": {
                    "path": "course",
                    "score_mode": "sum", 
                    "query": {
                      "function_score": {
                        "query": {
                          "bool": {
                            "must": [
                              {
                                "match": {
                                  "course.key1": "高一,高二,高三"
                                }
                              },
                              {
                                "match": {
                                  "course.key2": "高考"
                                }
                              }
                            ]
                          }
                        },
                        "script_score": {
                          "script": "doc['course.course_score'].value"
                        }
                      }
                    }
                  }
                }
              ]
            }
          }
          , "script_score": {
            "script": "_score"
          }
        }
      }
    }
  • 相关阅读:
    footer点击添加active class
    css背景图与html插入img的区别
    js实现游戏转盘抽奖
    gulp压缩css和js
    前后端分离中,gulp实现头尾等公共页面的复用 前言
    js 输入框只能输入 1-7 的数字
    java 环境变量配置
    两日期相减得到天数
    jQuery如何追加tr到table中 添加到头或者尾
    json 添加 和删除两种方法
  • 原文地址:https://www.cnblogs.com/smile361/p/7771209.html
Copyright © 2011-2022 走看看