Elasticsearch 내장 형 데 이 터 를 조회 하고 내장 데이터 에 적 중 된 요소 만 되 돌려 줍 니 다. md

15054 단어
\ # \ # 테스트 환경
  • Elasticsearch 6.3
  • Kibana 6.3

  • \ # \ # 테스트 데이터 만 들 기
    테스트 로 index 를 새로 만 듭 니 다.
    다음은 블 로그 글 과 댓 글 을 저장 하 는 데이터 구조 입 니 다. 댓 글 (comments) 은 nested 형식 입 니 다.
    PUT /es_blog
    {
        "mappings": {
            "blogpost": {
                "properties": {
                    "title": {
                        "type": "text"
                    },
                    "summary": {
                        "type": "text"
                    },
                    "content": {
                        "type": "text"
                    },
                    "comments": {
                        "type": "nested",
                        "properties": {
                            "name": {
                                "type": "text"
                            },
                            "comment": {
                                "type": "text"
                            },
                            "age": {
                                "type": "short"
                            },
                            "stars": {
                                "type": "short"
                            },
                            "date": {
                                "type": "date"
                            }
                        }
                    }
                }
            }
        }
    }

    테스트 데이터 쓰기
    PUT /es_blog/blogpost/1
    {
      "title": "   ",
      "summary": "     、JAVA、HTML5",
      "content": "         :JAVA、HTML5、JavaScript、    、     ",
      "comments": [
        {
          "name":    "John Smith",
          "comment": "Great article",
          "age":     28,
          "stars":   4,
          "date":    "2014-09-01"
        },
        {
          "name":    "Alice White",
          "comment": "More like this please",
          "age":     31,
          "stars":   5,
          "date":    "2014-10-22"
        }
      ]
    }
    
    PUT /es_blog/blogpost/2
    {
      "title": "Java       ",
      "summary": "JAVA、Oracle、Hibernate、Spring",
      "content": "Java           :JAVA、Oracle、Hibernate、Spring、      ",
      "comments": [
        {
          "name":    "John Smith",
          "comment": "     ",
          "age":     28,
          "stars":   4,
          "date":    "2014-09-01"
        },
        {
          "name":    "Alice White",
          "comment": "Java     ",
          "age":     31,
          "stars":   5,
          "date":    "2014-10-22"
        }
      ]
    }
    
    PUT /es_blog/blogpost/3
    {
      "title": "      ",
      "summary": "Hadoop、Hive、Hdfs、JAVA",
      "content": "          :Hadoop、Hive、Hdfs、JAVA、Spark、      ",
      "comments": [
        {
          "name":    "John Smith",
          "comment": "        ",
          "age":     28,
          "stars":   4,
          "date":    "2014-09-01"
        },
        {
          "name":    "Alice White",
          "comment": "    ",
          "age":     31,
          "stars":   5,
          "date":    "2014-10-22"
        }
      ]
    }
    
    PUT /es_blog/blogpost/4
    {
      "title": "       ",
      "summary": "Python、    、    、    、    ",
      "content": "           :Python、    、    、    、          ",
      "comments": [
        {
          "name":    "John Smith",
          "comment": "    NX",
          "age":     28,
          "stars":   4,
          "date":    "2014-09-01"
        },
        {
          "name":    "Alice White",
          "comment": "Python   ?",
          "age":     31,
          "stars":   5,
          "date":    "2014-10-22"
        }
      ]
    }

    \ # \ # 조회 실행
    검색 텍스트 필드 에 [엔지니어] 데이터 가 나 왔 습 니 다.
    GET es_blog/blogpost/_search
    {
      "_source": {
        "includes": [
          "*"
        ],
        "excludes": [
          "comments"   //           comments  
        ]
      },
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "title": "   "
              }
            },
            {
              "match": {
                "summary": "   "
              }
            },
            {
              "match": {
                "content": "   "
              }
            },
            {
              "nested": {
                "path": "comments",
                "query": {
                  "bool": {
                    "should": [
                      {
                        "match": {
                          "comments.comment": "   "
                        }
                      }
                    ]
                  }
                },
                "inner_hits": {}
              }
            }
          ]
        }
      }
    }

    결과 되 돌리 기:
    {
      "took": 9,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 4,
        "max_score": 3.5560012,
        "hits": [
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "3",
            "_score": 3.5560012,
            "_source": {
              "summary": "Hadoop、Hive、Hdfs、JAVA",
              "title": "      ",
              "content": "          :Hadoop、Hive、Hdfs、JAVA、Spark、      "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 1,
                  "max_score": 1.8299085,
                  "hits": [
                    {
                      "_index": "es_blog",
                      "_type": "blogpost",
                      "_id": "3",
                      "_nested": {
                        "field": "comments",
                        "offset": 0
                      },
                      "_score": 1.8299085,
                      "_source": {
                        "name": "John Smith",
                        "comment": "        ",
                        "age": 28,
                        "stars": 4,
                        "date": "2014-09-01"
                      }
                    }
                  ]
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "2",
            "_score": 3.1327708,
            "_source": {
              "summary": "JAVA、Oracle、Hibernate、Spring",
              "title": "Java       ",
              "content": "Java           :JAVA、Oracle、Hibernate、Spring、      "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 2,
                  "max_score": 2.0794415,
                  "hits": [
                    {
                      "_index": "es_blog",
                      "_type": "blogpost",
                      "_id": "2",
                      "_nested": {
                        "field": "comments",
                        "offset": 0
                      },
                      "_score": 2.0794415,
                      "_source": {
                        "name": "John Smith",
                        "comment": "     ",
                        "age": 28,
                        "stars": 4,
                        "date": "2014-09-01"
                      }
                    },
                    {
                      "_index": "es_blog",
                      "_type": "blogpost",
                      "_id": "2",
                      "_nested": {
                        "field": "comments",
                        "offset": 1
                      },
                      "_score": 1.9221728,
                      "_source": {
                        "name": "Alice White",
                        "comment": "Java     ",
                        "age": 31,
                        "stars": 5,
                        "date": "2014-10-22"
                      }
                    }
                  ]
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "1",
            "_score": 1.7260926,
            "_source": {
              "summary": "     、JAVA、HTML5",
              "title": "   ",
              "content": "         :JAVA、HTML5、JavaScript、    、     "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 0,
                  "max_score": null,
                  "hits": []
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "4",
            "_score": 1.0651813,
            "_source": {
              "summary": "Python、    、    、    、    ",
              "title": "       ",
              "content": "           :Python、    、    、    、          "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 0,
                  "max_score": null,
                  "hits": []
                }
              }
            }
          }
        ]
      }
    }

    콘 텐 츠 에 [java] 가 나타 나 거나 댓 글 에 [python] 이 나타 나 는 데 이 터 를 조회 합 니 다.
    GET es_blog/blogpost/_search
    {
      "_source": {
        "includes": [
          "*"
        ],
        "excludes": [
          "comments"
        ]
      },
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "content": "java"
              }
            },
            {
              "nested": {
                "path": "comments",
                "query": {
                  "bool": {
                    "should": [
                      {
                        "match": {
                          "comments.comment": "python"
                        }
                      }
                    ]
                  }
                },
                "inner_hits": {}
              }
            }
          ]
        }
      }
    }

    결과 되 돌리 기
    {
      "took": 9,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 4,
        "max_score": 1.3112576,
        "hits": [
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "4",
            "_score": 1.3112576,
            "_source": {
              "summary": "Python、    、    、    、    ",
              "title": "       ",
              "content": "           :Python、    、    、    、          "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 1,
                  "max_score": 1.3112576,
                  "hits": [
                    {
                      "_index": "es_blog",
                      "_type": "blogpost",
                      "_id": "4",
                      "_nested": {
                        "field": "comments",
                        "offset": 1
                      },
                      "_score": 1.3112576,
                      "_source": {
                        "name": "Alice White",
                        "comment": "Python   ?",
                        "age": 31,
                        "stars": 5,
                        "date": "2014-10-22"
                      }
                    }
                  ]
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "2",
            "_score": 0.75974846,
            "_source": {
              "summary": "JAVA、Oracle、Hibernate、Spring",
              "title": "Java       ",
              "content": "Java           :JAVA、Oracle、Hibernate、Spring、      "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 0,
                  "max_score": null,
                  "hits": []
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "1",
            "_score": 0.2876821,
            "_source": {
              "summary": "     、JAVA、HTML5",
              "title": "   ",
              "content": "         :JAVA、HTML5、JavaScript、    、     "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 0,
                  "max_score": null,
                  "hits": []
                }
              }
            }
          },
          {
            "_index": "es_blog",
            "_type": "blogpost",
            "_id": "3",
            "_score": 0.2876821,
            "_source": {
              "summary": "Hadoop、Hive、Hdfs、JAVA",
              "title": "      ",
              "content": "          :Hadoop、Hive、Hdfs、JAVA、Spark、      "
            },
            "inner_hits": {
              "comments": {
                "hits": {
                  "total": 0,
                  "max_score": null,
                  "hits": []
                }
              }
            }
          }
        ]
      }
    }

    다음으로 전송:https://www.cnblogs.com/robinzh/p/9311025.html

    좋은 웹페이지 즐겨찾기