浏览代码

ES数据库操作服务

wangdong6 4 年之前
当前提交
6f24e8d60b

+ 33 - 0
.gitignore

@ -0,0 +1,33 @@
1
HELP.md
2
target/
3
!.mvn/wrapper/maven-wrapper.jar
4
!**/src/main/**/target/
5
!**/src/test/**/target/
6
7
### STS ###
8
.apt_generated
9
.classpath
10
.factorypath
11
.project
12
.settings
13
.springBeans
14
.sts4-cache
15
16
### IntelliJ IDEA ###
17
.idea
18
*.iws
19
*.iml
20
*.ipr
21
22
### NetBeans ###
23
/nbproject/private/
24
/nbbuild/
25
/dist/
26
/nbdist/
27
/.nb-gradle/
28
build/
29
!**/src/main/**/build/
30
!**/src/test/**/build/
31
32
### VS Code ###
33
.vscode/

+ 118 - 0
.mvn/wrapper/MavenWrapperDownloader.java

@ -0,0 +1,118 @@
1
/*
2
 * Copyright 2007-present the original author or authors.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 *      https://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
17
import java.net.*;
18
import java.io.*;
19
import java.nio.channels.*;
20
import java.util.Properties;
21
22
public class MavenWrapperDownloader {
23
24
    private static final String WRAPPER_VERSION = "0.5.6";
25
    /**
26
     * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
27
     */
28
    private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
29
            + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
30
31
    /**
32
     * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
33
     * use instead of the default one.
34
     */
35
    private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
36
            ".mvn/wrapper/maven-wrapper.properties";
37
38
    /**
39
     * Path where the maven-wrapper.jar will be saved to.
40
     */
41
    private static final String MAVEN_WRAPPER_JAR_PATH =
42
            ".mvn/wrapper/maven-wrapper.jar";
43
44
    /**
45
     * Name of the property which should be used to override the default download url for the wrapper.
46
     */
47
    private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
48
49
    public static void main(String args[]) {
50
        System.out.println("- Downloader started");
51
        File baseDirectory = new File(args[0]);
52
        System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
53
54
        // If the maven-wrapper.properties exists, read it and check if it contains a custom
55
        // wrapperUrl parameter.
56
        File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
57
        String url = DEFAULT_DOWNLOAD_URL;
58
        if (mavenWrapperPropertyFile.exists()) {
59
            FileInputStream mavenWrapperPropertyFileInputStream = null;
60
            try {
61
                mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
62
                Properties mavenWrapperProperties = new Properties();
63
                mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
64
                url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
65
            } catch (IOException e) {
66
                System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
67
            } finally {
68
                try {
69
                    if (mavenWrapperPropertyFileInputStream != null) {
70
                        mavenWrapperPropertyFileInputStream.close();
71
                    }
72
                } catch (IOException e) {
73
                    // Ignore ...
74
                }
75
            }
76
        }
77
        System.out.println("- Downloading from: " + url);
78
79
        File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
80
        if (!outputFile.getParentFile().exists()) {
81
            if (!outputFile.getParentFile().mkdirs()) {
82
                System.out.println(
83
                        "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
84
            }
85
        }
86
        System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
87
        try {
88
            downloadFileFromURL(url, outputFile);
89
            System.out.println("Done");
90
            System.exit(0);
91
        } catch (Throwable e) {
92
            System.out.println("- Error downloading");
93
            e.printStackTrace();
94
            System.exit(1);
95
        }
96
    }
97
98
    private static void downloadFileFromURL(String urlString, File destination) throws Exception {
99
        if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
100
            String username = System.getenv("MVNW_USERNAME");
101
            char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
102
            Authenticator.setDefault(new Authenticator() {
103
                @Override
104
                protected PasswordAuthentication getPasswordAuthentication() {
105
                    return new PasswordAuthentication(username, password);
106
                }
107
            });
108
        }
109
        URL website = new URL(urlString);
110
        ReadableByteChannel rbc;
111
        rbc = Channels.newChannel(website.openStream());
112
        FileOutputStream fos = new FileOutputStream(destination);
113
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
114
        fos.close();
115
        rbc.close();
116
    }
117
118
}

二进制
.mvn/wrapper/maven-wrapper.jar


+ 2 - 0
.mvn/wrapper/maven-wrapper.properties

@ -0,0 +1,2 @@
1
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
2
wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar

+ 310 - 0
mvnw

@ -0,0 +1,310 @@
1
#!/bin/sh
2
# ----------------------------------------------------------------------------
3
# Licensed to the Apache Software Foundation (ASF) under one
4
# or more contributor license agreements.  See the NOTICE file
5
# distributed with this work for additional information
6
# regarding copyright ownership.  The ASF licenses this file
7
# to you under the Apache License, Version 2.0 (the
8
# "License"); you may not use this file except in compliance
9
# with the License.  You may obtain a copy of the License at
10
#
11
#    https://www.apache.org/licenses/LICENSE-2.0
12
#
13
# Unless required by applicable law or agreed to in writing,
14
# software distributed under the License is distributed on an
15
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
# KIND, either express or implied.  See the License for the
17
# specific language governing permissions and limitations
18
# under the License.
19
# ----------------------------------------------------------------------------
20
21
# ----------------------------------------------------------------------------
22
# Maven Start Up Batch script
23
#
24
# Required ENV vars:
25
# ------------------
26
#   JAVA_HOME - location of a JDK home dir
27
#
28
# Optional ENV vars
29
# -----------------
30
#   M2_HOME - location of maven2's installed home dir
31
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
32
#     e.g. to debug Maven itself, use
33
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
34
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
35
# ----------------------------------------------------------------------------
36
37
if [ -z "$MAVEN_SKIP_RC" ] ; then
38
39
  if [ -f /etc/mavenrc ] ; then
40
    . /etc/mavenrc
41
  fi
42
43
  if [ -f "$HOME/.mavenrc" ] ; then
44
    . "$HOME/.mavenrc"
45
  fi
46
47
fi
48
49
# OS specific support.  $var _must_ be set to either true or false.
50
cygwin=false;
51
darwin=false;
52
mingw=false
53
case "`uname`" in
54
  CYGWIN*) cygwin=true ;;
55
  MINGW*) mingw=true;;
56
  Darwin*) darwin=true
57
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
58
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
59
    if [ -z "$JAVA_HOME" ]; then
60
      if [ -x "/usr/libexec/java_home" ]; then
61
        export JAVA_HOME="`/usr/libexec/java_home`"
62
      else
63
        export JAVA_HOME="/Library/Java/Home"
64
      fi
65
    fi
66
    ;;
67
esac
68
69
if [ -z "$JAVA_HOME" ] ; then
70
  if [ -r /etc/gentoo-release ] ; then
71
    JAVA_HOME=`java-config --jre-home`
72
  fi
73
fi
74
75
if [ -z "$M2_HOME" ] ; then
76
  ## resolve links - $0 may be a link to maven's home
77
  PRG="$0"
78
79
  # need this for relative symlinks
80
  while [ -h "$PRG" ] ; do
81
    ls=`ls -ld "$PRG"`
82
    link=`expr "$ls" : '.*-> \(.*\)$'`
83
    if expr "$link" : '/.*' > /dev/null; then
84
      PRG="$link"
85
    else
86
      PRG="`dirname "$PRG"`/$link"
87
    fi
88
  done
89
90
  saveddir=`pwd`
91
92
  M2_HOME=`dirname "$PRG"`/..
93
94
  # make it fully qualified
95
  M2_HOME=`cd "$M2_HOME" && pwd`
96
97
  cd "$saveddir"
98
  # echo Using m2 at $M2_HOME
99
fi
100
101
# For Cygwin, ensure paths are in UNIX format before anything is touched
102
if $cygwin ; then
103
  [ -n "$M2_HOME" ] &&
104
    M2_HOME=`cygpath --unix "$M2_HOME"`
105
  [ -n "$JAVA_HOME" ] &&
106
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
107
  [ -n "$CLASSPATH" ] &&
108
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
109
fi
110
111
# For Mingw, ensure paths are in UNIX format before anything is touched
112
if $mingw ; then
113
  [ -n "$M2_HOME" ] &&
114
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
115
  [ -n "$JAVA_HOME" ] &&
116
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
117
fi
118
119
if [ -z "$JAVA_HOME" ]; then
120
  javaExecutable="`which javac`"
121
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
122
    # readlink(1) is not available as standard on Solaris 10.
123
    readLink=`which readlink`
124
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
125
      if $darwin ; then
126
        javaHome="`dirname \"$javaExecutable\"`"
127
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
128
      else
129
        javaExecutable="`readlink -f \"$javaExecutable\"`"
130
      fi
131
      javaHome="`dirname \"$javaExecutable\"`"
132
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
133
      JAVA_HOME="$javaHome"
134
      export JAVA_HOME
135
    fi
136
  fi
137
fi
138
139
if [ -z "$JAVACMD" ] ; then
140
  if [ -n "$JAVA_HOME"  ] ; then
141
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
142
      # IBM's JDK on AIX uses strange locations for the executables
143
      JAVACMD="$JAVA_HOME/jre/sh/java"
144
    else
145
      JAVACMD="$JAVA_HOME/bin/java"
146
    fi
147
  else
148
    JAVACMD="`which java`"
149
  fi
150
fi
151
152
if [ ! -x "$JAVACMD" ] ; then
153
  echo "Error: JAVA_HOME is not defined correctly." >&2
154
  echo "  We cannot execute $JAVACMD" >&2
155
  exit 1
156
fi
157
158
if [ -z "$JAVA_HOME" ] ; then
159
  echo "Warning: JAVA_HOME environment variable is not set."
160
fi
161
162
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
163
164
# traverses directory structure from process work directory to filesystem root
165
# first directory with .mvn subdirectory is considered project base directory
166
find_maven_basedir() {
167
168
  if [ -z "$1" ]
169
  then
170
    echo "Path not specified to find_maven_basedir"
171
    return 1
172
  fi
173
174
  basedir="$1"
175
  wdir="$1"
176
  while [ "$wdir" != '/' ] ; do
177
    if [ -d "$wdir"/.mvn ] ; then
178
      basedir=$wdir
179
      break
180
    fi
181
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
182
    if [ -d "${wdir}" ]; then
183
      wdir=`cd "$wdir/.."; pwd`
184
    fi
185
    # end of workaround
186
  done
187
  echo "${basedir}"
188
}
189
190
# concatenates all lines of a file
191
concat_lines() {
192
  if [ -f "$1" ]; then
193
    echo "$(tr -s '\n' ' ' < "$1")"
194
  fi
195
}
196
197
BASE_DIR=`find_maven_basedir "$(pwd)"`
198
if [ -z "$BASE_DIR" ]; then
199
  exit 1;
200
fi
201
202
##########################################################################################
203
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
204
# This allows using the maven wrapper in projects that prohibit checking in binary data.
205
##########################################################################################
206
if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
207
    if [ "$MVNW_VERBOSE" = true ]; then
208
      echo "Found .mvn/wrapper/maven-wrapper.jar"
209
    fi
210
else
211
    if [ "$MVNW_VERBOSE" = true ]; then
212
      echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
213
    fi
214
    if [ -n "$MVNW_REPOURL" ]; then
215
      jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
216
    else
217
      jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
218
    fi
219
    while IFS="=" read key value; do
220
      case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
221
      esac
222
    done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
223
    if [ "$MVNW_VERBOSE" = true ]; then
224
      echo "Downloading from: $jarUrl"
225
    fi
226
    wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
227
    if $cygwin; then
228
      wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
229
    fi
230
231
    if command -v wget > /dev/null; then
232
        if [ "$MVNW_VERBOSE" = true ]; then
233
          echo "Found wget ... using wget"
234
        fi
235
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
236
            wget "$jarUrl" -O "$wrapperJarPath"
237
        else
238
            wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
239
        fi
240
    elif command -v curl > /dev/null; then
241
        if [ "$MVNW_VERBOSE" = true ]; then
242
          echo "Found curl ... using curl"
243
        fi
244
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
245
            curl -o "$wrapperJarPath" "$jarUrl" -f
246
        else
247
            curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
248
        fi
249
250
    else
251
        if [ "$MVNW_VERBOSE" = true ]; then
252
          echo "Falling back to using Java to download"
253
        fi
254
        javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
255
        # For Cygwin, switch paths to Windows format before running javac
256
        if $cygwin; then
257
          javaClass=`cygpath --path --windows "$javaClass"`
258
        fi
259
        if [ -e "$javaClass" ]; then
260
            if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
261
                if [ "$MVNW_VERBOSE" = true ]; then
262
                  echo " - Compiling MavenWrapperDownloader.java ..."
263
                fi
264
                # Compiling the Java class
265
                ("$JAVA_HOME/bin/javac" "$javaClass")
266
            fi
267
            if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
268
                # Running the downloader
269
                if [ "$MVNW_VERBOSE" = true ]; then
270
                  echo " - Running MavenWrapperDownloader.java ..."
271
                fi
272
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
273
            fi
274
        fi
275
    fi
276
fi
277
##########################################################################################
278
# End of extension
279
##########################################################################################
280
281
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
282
if [ "$MVNW_VERBOSE" = true ]; then
283
  echo $MAVEN_PROJECTBASEDIR
284
fi
285
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
286
287
# For Cygwin, switch paths to Windows format before running java
288
if $cygwin; then
289
  [ -n "$M2_HOME" ] &&
290
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
291
  [ -n "$JAVA_HOME" ] &&
292
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
293
  [ -n "$CLASSPATH" ] &&
294
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
295
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
296
    MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
297
fi
298
299
# Provide a "standardized" way to retrieve the CLI args that will
300
# work with both Windows and non-Windows executions.
301
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
302
export MAVEN_CMD_LINE_ARGS
303
304
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
305
306
exec "$JAVACMD" \
307
  $MAVEN_OPTS \
308
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
309
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
310
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"

+ 182 - 0
mvnw.cmd

@ -0,0 +1,182 @@
1
@REM ----------------------------------------------------------------------------
2
@REM Licensed to the Apache Software Foundation (ASF) under one
3
@REM or more contributor license agreements.  See the NOTICE file
4
@REM distributed with this work for additional information
5
@REM regarding copyright ownership.  The ASF licenses this file
6
@REM to you under the Apache License, Version 2.0 (the
7
@REM "License"); you may not use this file except in compliance
8
@REM with the License.  You may obtain a copy of the License at
9
@REM
10
@REM    https://www.apache.org/licenses/LICENSE-2.0
11
@REM
12
@REM Unless required by applicable law or agreed to in writing,
13
@REM software distributed under the License is distributed on an
14
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
@REM KIND, either express or implied.  See the License for the
16
@REM specific language governing permissions and limitations
17
@REM under the License.
18
@REM ----------------------------------------------------------------------------
19
20
@REM ----------------------------------------------------------------------------
21
@REM Maven Start Up Batch script
22
@REM
23
@REM Required ENV vars:
24
@REM JAVA_HOME - location of a JDK home dir
25
@REM
26
@REM Optional ENV vars
27
@REM M2_HOME - location of maven2's installed home dir
28
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
29
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
30
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
31
@REM     e.g. to debug Maven itself, use
32
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
33
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
34
@REM ----------------------------------------------------------------------------
35
36
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
37
@echo off
38
@REM set title of command window
39
title %0
40
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
41
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
42
43
@REM set %HOME% to equivalent of $HOME
44
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
45
46
@REM Execute a user defined script before this one
47
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
48
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
49
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
50
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
51
:skipRcPre
52
53
@setlocal
54
55
set ERROR_CODE=0
56
57
@REM To isolate internal variables from possible post scripts, we use another setlocal
58
@setlocal
59
60
@REM ==== START VALIDATION ====
61
if not "%JAVA_HOME%" == "" goto OkJHome
62
63
echo.
64
echo Error: JAVA_HOME not found in your environment. >&2
65
echo Please set the JAVA_HOME variable in your environment to match the >&2
66
echo location of your Java installation. >&2
67
echo.
68
goto error
69
70
:OkJHome
71
if exist "%JAVA_HOME%\bin\java.exe" goto init
72
73
echo.
74
echo Error: JAVA_HOME is set to an invalid directory. >&2
75
echo JAVA_HOME = "%JAVA_HOME%" >&2
76
echo Please set the JAVA_HOME variable in your environment to match the >&2
77
echo location of your Java installation. >&2
78
echo.
79
goto error
80
81
@REM ==== END VALIDATION ====
82
83
:init
84
85
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
86
@REM Fallback to current working directory if not found.
87
88
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
89
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
90
91
set EXEC_DIR=%CD%
92
set WDIR=%EXEC_DIR%
93
:findBaseDir
94
IF EXIST "%WDIR%"\.mvn goto baseDirFound
95
cd ..
96
IF "%WDIR%"=="%CD%" goto baseDirNotFound
97
set WDIR=%CD%
98
goto findBaseDir
99
100
:baseDirFound
101
set MAVEN_PROJECTBASEDIR=%WDIR%
102
cd "%EXEC_DIR%"
103
goto endDetectBaseDir
104
105
:baseDirNotFound
106
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
107
cd "%EXEC_DIR%"
108
109
:endDetectBaseDir
110
111
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
112
113
@setlocal EnableExtensions EnableDelayedExpansion
114
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
115
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
116
117
:endReadAdditionalConfig
118
119
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
120
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
121
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
122
123
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
124
125
FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
126
    IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
127
)
128
129
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
130
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
131
if exist %WRAPPER_JAR% (
132
    if "%MVNW_VERBOSE%" == "true" (
133
        echo Found %WRAPPER_JAR%
134
    )
135
) else (
136
    if not "%MVNW_REPOURL%" == "" (
137
        SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
138
    )
139
    if "%MVNW_VERBOSE%" == "true" (
140
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
141
        echo Downloading from: %DOWNLOAD_URL%
142
    )
143
144
    powershell -Command "&{"^
145
		"$webclient = new-object System.Net.WebClient;"^
146
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
147
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
148
		"}"^
149
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
150
		"}"
151
    if "%MVNW_VERBOSE%" == "true" (
152
        echo Finished downloading %WRAPPER_JAR%
153
    )
154
)
155
@REM End of extension
156
157
@REM Provide a "standardized" way to retrieve the CLI args that will
158
@REM work with both Windows and non-Windows executions.
159
set MAVEN_CMD_LINE_ARGS=%*
160
161
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
162
if ERRORLEVEL 1 goto error
163
goto end
164
165
:error
166
set ERROR_CODE=1
167
168
:end
169
@endlocal & set ERROR_CODE=%ERROR_CODE%
170
171
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
172
@REM check for post script, once with legacy .bat ending and once with .cmd ending
173
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
174
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
175
:skipRcPost
176
177
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
178
if "%MAVEN_BATCH_PAUSE%" == "on" pause
179
180
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
181
182
exit /B %ERROR_CODE%

+ 223 - 0
pom.xml

@ -0,0 +1,223 @@
1
<?xml version="1.0" encoding="UTF-8"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4
    <modelVersion>4.0.0</modelVersion>
5
    <parent>
6
        <groupId>org.springframework.boot</groupId>
7
        <artifactId>spring-boot-starter-parent</artifactId>
8
        <version>2.3.4.RELEASE</version>
9
        <relativePath/> <!-- lookup parent from repository -->
10
    </parent>
11
    <groupId>com.ai.bss.es</groupId>
12
    <artifactId>es-manage</artifactId>
13
    <version>0.0.1-SNAPSHOT</version>
14
    <name>es-manage</name>
15
    <description>es manage for Spring Boot</description>
16
17
    <properties>
18
        <java.version>1.8</java.version>
19
        <!-- 这里必须要填写,因为springboot2.3.2默认的elasticsearch版本为7.6.2,我们使用的是7.4.2,不更改会产生版本不兼容等问题 -->
20
        <elasticsearch.version>7.4.2</elasticsearch.version>
21
    </properties>
22
23
    <dependencies>
24
        <dependency>
25
            <groupId>org.springframework.boot</groupId>
26
            <artifactId>spring-boot-starter-web</artifactId>
27
        </dependency>
28
29
30
<!--         这里我使用的是elasticsearch的high-level-client 版本要和你的elasticsearch版本对应-->
31
<!--        <dependency>-->
32
<!--            <groupId>org.elasticsearch.client</groupId>-->
33
<!--            <artifactId>elasticsearch-rest-high-level-client</artifactId>-->
34
<!--            <version>7.4.2</version>-->
35
<!--            <exclusions>-->
36
<!--                <exclusion>-->
37
<!--                    <groupId>org.elasticsearch</groupId>-->
38
<!--                    <artifactId>elasticsearch</artifactId>-->
39
<!--                </exclusion>-->
40
<!--            </exclusions>-->
41
<!--        </dependency>-->
42
43
        <dependency>
44
            <groupId>org.springframework.boot</groupId>
45
            <artifactId>spring-boot-starter-test</artifactId>
46
            <scope>test</scope>
47
            <exclusions>
48
                <exclusion>
49
                    <groupId>org.junit.vintage</groupId>
50
                    <artifactId>junit-vintage-engine</artifactId>
51
                </exclusion>
52
            </exclusions>
53
        </dependency>
54
55
        <dependency>
56
            <groupId>org.projectlombok</groupId>
57
            <artifactId>lombok</artifactId>
58
            <version>1.18.12</version>
59
        </dependency>
60
61
        <dependency>
62
            <groupId>com.ai.abc</groupId>
63
            <artifactId>persistence-es</artifactId>
64
            <version>2.0-SNAPSHOT</version>
65
            <exclusions>
66
                <exclusion>
67
                    <groupId>org.springframework.boot</groupId>
68
                    <artifactId>spring-boot-starter-log4j2</artifactId>
69
                </exclusion>
70
<!--                <exclusion>-->
71
<!--                    <groupId>org.elasticsearch</groupId>-->
72
<!--                    <artifactId>elasticsearch</artifactId>-->
73
<!--                </exclusion>-->
74
<!--                <exclusion>-->
75
<!--                    <groupId>org.elasticsearch.client</groupId>-->
76
<!--                    <artifactId>elasticsearch-rest-high-level-client</artifactId>-->
77
<!--                </exclusion>-->
78
<!--                <exclusion>-->
79
<!--                    <groupId>org.projectlombok</groupId>-->
80
<!--                    <artifactId>lombok</artifactId>-->
81
<!--                </exclusion>-->
82
            </exclusions>
83
        </dependency>
84
    </dependencies>
85
86
    <build>
87
88
        <resources>
89
            <resource>
90
                <directory>src/main/resources</directory>
91
                <excludes>
92
                    <exclude>environment/dev/**</exclude>
93
                    <exclude>environment/product/**</exclude>
94
                    <exclude>environment/test/**</exclude>
95
                </excludes>
96
            </resource>
97
            <resource>
98
                <directory>${project.basedir}/src/main/resources/environment/${env}</directory>
99
            </resource>
100
        </resources>
101
102
103
        <plugins>
104
            <plugin>
105
                <groupId>org.springframework.boot</groupId>
106
                <artifactId>spring-boot-maven-plugin</artifactId>
107
            </plugin>
108
            <!--            <plugin>
109
                            <groupId>org.apache.maven.plugins</groupId>
110
                            <artifactId>maven-resources-plugin</artifactId>
111
                            <executions>
112
                                <execution>
113
                                    <id>copy-resources</id>
114
                                    <phase>package</phase>
115
                                    <goals>
116
                                        <goal>copy-resources</goal>
117
                                    </goals>
118
                                    <configuration>
119
                                        <encoding>UTF-8</encoding>
120
                                        <outputDirectory>
121
                                            ${project.build.directory}/config
122
                                        </outputDirectory>
123
                                        <resources>
124
                                            <resource>
125
                                                <directory>src/main/resources/environment/${env}</directory>
126
                                                <includes>
127
                                                    <include>**/*.properties</include>
128
                                                    <include>**/*.xml</include>
129
                                                </includes>
130
                                            </resource>
131
                                        </resources>
132
                                    </configuration>
133
                                </execution>
134
                            </executions>
135
                        </plugin>-->
136
137
            <!-- The configuration of maven-jar-plugin -->
138
            <plugin>
139
                <groupId>org.apache.maven.plugins</groupId>
140
                <artifactId>maven-jar-plugin</artifactId>
141
                <version>2.4</version>
142
                <!-- The configuration of the plugin -->
143
                <configuration>
144
                    <!-- Configuration of the archiver -->
145
                    <archive>
146
                        <!--生成的jar中,不要包含pom.xml和pom.properties这两个文件-->
147
                        <addMavenDescriptor>false</addMavenDescriptor>
148
149
                        <!-- Manifest specific configuration -->
150
                        <manifest>
151
                            <!--是否要把第三方jar放到manifest的classpath中-->
152
                            <addClasspath>true</addClasspath>
153
                            <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/-->
154
                            <classpathPrefix>lib/</classpathPrefix>
155
                            <!--应用的main class-->
156
                            <mainClass>com.ai.bss.es.esmanage.EsManageApplication</mainClass>
157
                        </manifest>
158
                        <manifestEntries>
159
                            <Class-Path>./config/</Class-Path>
160
                        </manifestEntries>
161
                    </archive>
162
                    <!--过滤掉不希望包含在jar中的文件-->
163
                    <excludes>
164
                        <exclude>**/*.properties</exclude>
165
                        <exclude>**/*.xml</exclude>
166
                    </excludes>
167
                </configuration>
168
            </plugin>
169
170
            <plugin>
171
                <groupId>org.apache.maven.plugins</groupId>
172
                <artifactId>maven-dependency-plugin</artifactId>
173
                <version>2.10</version>
174
                <executions>
175
                    <execution>
176
                        <id>copy-dependencies</id>
177
                        <phase>package</phase>
178
                        <goals>
179
                            <goal>copy-dependencies</goal>
180
                        </goals>
181
                        <configuration>
182
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
183
                        </configuration>
184
                    </execution>
185
                </executions>
186
            </plugin>
187
188
            <!-- The configuration of maven-assembly-plugin -->
189
            <plugin>
190
                <groupId>org.apache.maven.plugins</groupId>
191
                <artifactId>maven-assembly-plugin</artifactId>
192
                <version>2.4</version>
193
                <!-- The configuration of the plugin -->
194
                <configuration>
195
                    <!-- Specifies the configuration file of the assembly plugin -->
196
                    <descriptors>
197
                        <descriptor>${project.basedir}/src/main/assembly/package.xml</descriptor>
198
                    </descriptors>
199
                </configuration>
200
                <executions>
201
                    <execution>
202
                        <id>make-assembly</id>
203
                        <phase>package</phase>
204
                        <goals>
205
                            <goal>single</goal>
206
                        </goals>
207
                    </execution>
208
                </executions>
209
            </plugin>
210
211
            <plugin>
212
                <groupId>org.apache.maven.plugins</groupId>
213
                <artifactId>maven-surefire-plugin</artifactId>
214
                <configuration>
215
                    <skip>true</skip>
216
                </configuration>
217
            </plugin>
218
        </plugins>
219
220
    </build>
221
222
223
</project>

+ 60 - 0
src/main/assembly/package.xml

@ -0,0 +1,60 @@
1
<assembly>
2
  <id>bin</id>
3
  <!-- 最终打包成一个用于发布的zip文件 -->
4
  <formats>
5
    <format>zip</format>
6
  </formats>
7
8
  <!-- Adds dependencies to zip package under lib directory -->
9
  <dependencySets>
10
    <dependencySet>
11
      <!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 -->
12
      <useProjectArtifact>false</useProjectArtifact>
13
      <outputDirectory>lib</outputDirectory>
14
      <unpack>false</unpack>
15
      <scope>runtime</scope>
16
    </dependencySet>
17
  </dependencySets>
18
19
  <fileSets>
20
    <!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
21
    <fileSet>
22
      <directory>${project.basedir}</directory>
23
      <outputDirectory>/</outputDirectory>
24
      <includes>
25
        <include>README*</include>
26
        <include>LICENSE*</include>
27
        <include>NOTICE*</include>
28
      </includes>
29
    </fileSet>
30
31
    <!-- 把项目的配置文件,打包进zip文件的config目录 -->
32
    <fileSet>
33
<!--      <directory>/src/main/resources/environment/${env}</directory>-->
34
      <directory>/src/main/resources</directory>
35
      <outputDirectory>/config</outputDirectory>
36
      <includes>
37
        <include>**/*.properties</include>
38
        <include>**/*.xml</include>
39
      </includes>
40
    </fileSet>
41
42
    <!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
43
    <fileSet>
44
      <directory>${project.build.scriptSourceDirectory}</directory>
45
      <outputDirectory></outputDirectory>
46
      <includes>
47
        <include>startup.*</include>
48
      </includes>
49
    </fileSet>
50
51
    <!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
52
    <fileSet>
53
      <directory>${project.build.directory}</directory>
54
      <outputDirectory></outputDirectory>
55
      <includes>
56
        <include>*.jar</include>
57
      </includes>
58
    </fileSet>
59
  </fileSets>
60
</assembly>

+ 13 - 0
src/main/java/com/ai/bss/es/esmanage/EsManageApplication.java

@ -0,0 +1,13 @@
1
package com.ai.bss.es.esmanage;
2
3
import org.springframework.boot.SpringApplication;
4
import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6
@SpringBootApplication
7
public class EsManageApplication {
8
9
    public static void main(String[] args) {
10
        SpringApplication.run(EsManageApplication.class, args);
11
    }
12
13
}

+ 133 - 0
src/main/java/com/ai/bss/es/esmanage/controller/EsController.java

@ -0,0 +1,133 @@
1
package com.ai.bss.es.esmanage.controller;
2
3
import com.ai.bss.es.esmanage.service.EsService;
4
import com.ai.bss.es.esmanage.utils.RequestEntity;
5
import com.ai.bss.es.esmanage.utils.ResponseResult;
6
import org.elasticsearch.action.index.IndexRequest;
7
import org.elasticsearch.action.index.IndexResponse;
8
import org.elasticsearch.action.search.SearchRequest;
9
import org.elasticsearch.action.search.SearchResponse;
10
import org.elasticsearch.client.RequestOptions;
11
import org.elasticsearch.client.RestHighLevelClient;
12
import org.elasticsearch.common.xcontent.XContentType;
13
import org.elasticsearch.index.query.BoolQueryBuilder;
14
import org.elasticsearch.index.query.MatchQueryBuilder;
15
import org.elasticsearch.index.query.QueryBuilders;
16
import org.elasticsearch.search.SearchHit;
17
import org.elasticsearch.search.aggregations.AggregationBuilders;
18
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
19
import org.elasticsearch.search.aggregations.metrics.AvgAggregationBuilder;
20
import org.elasticsearch.search.builder.SearchSourceBuilder;
21
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.beans.factory.annotation.Value;
23
import org.springframework.web.bind.annotation.PostMapping;
24
import org.springframework.web.bind.annotation.RequestBody;
25
import org.springframework.web.bind.annotation.RequestMapping;
26
import org.springframework.web.bind.annotation.RestController;
27
28
import java.io.IOException;
29
import java.util.ArrayList;
30
import java.util.List;
31
import java.util.Map;
32
33
@RestController
34
@RequestMapping("/es")
35
public class EsController {
36
37
    @Autowired
38
    private RestHighLevelClient client;
39
40
    @Autowired
41
    private EsService esService;
42
43
    @PostMapping("/execute")
44
    ResponseResult execute(@RequestBody RequestEntity requestEntity) throws IOException {
45
//        SearchRequest requestEs = null;
46
//        String entity = requestEntity.getEntity();
47
//        String methods = requestEntity.getMethods();
48
//        String tableName = requestEntity.getTableName();
49
//        String type = requestEntity.getType();
50
//        if("search".equals(methods)){
51
//            requestEs =  new SearchRequest(tableName);
52
//            SearchResponse searchResponse = client.search(requestEs, RequestOptions.DEFAULT);
53
//
54
//            //6、开始处理返回的数据
55
//            SearchHit[] hits = searchResponse.getHits().getHits();
56
//            List<String> list = new ArrayList<String>();
57
//            for (SearchHit hit : hits) {
58
//                String hitString = hit.getSourceAsString();
59
//                System.out.println(hitString);
60
//                list.add(hitString);
61
//            }
62
//            ResponseResult.sucess(list);
63
//        }
64
//
65
//        if("GET".equals(methods)){
66
//            requestEs =  new SearchRequest(tableName);
67
//            SearchResponse searchResponse = null;//purePersist(requestEs, RequestOptions.DEFAULT);
68
//
69
//            //6、开始处理返回的数据
70
//            SearchHit[] hits = searchResponse.getHits().getHits();
71
//            List<String> list = new ArrayList<String>();
72
//            for (SearchHit hit : hits) {
73
//                String hitString = hit.getSourceAsString();
74
//                System.out.println(hitString);
75
//                list.add(hitString);
76
//            }
77
//            ResponseResult.sucess(list);
78
//        }
79
80
        return esService.executeEsEntity(requestEntity);
81
    }
82
83
84
    @RequestMapping("/test")
85
    List<String> contextLoads() throws IOException {
86
        //1、创建查询请求,规定查询的索引
87
        SearchRequest request = new SearchRequest("es_terminal_event");
88
        //2、创建条件构造
89
        SearchSourceBuilder builder = new SearchSourceBuilder();
90
        //3、构造条件
91
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("address", "Lane");
92
        builder.query(matchQueryBuilder);
93
        //聚合年龄分布
94
        TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age");
95
        builder.aggregation(ageAgg);
96
//
97
//        //聚合平均年龄
98
        AvgAggregationBuilder balanceAvg = AggregationBuilders.avg("balanceAvg").field("balance");
99
        builder.aggregation(balanceAvg);
100
101
        List<String> ids = new ArrayList();
102
        ids.add("981489");
103
        ids.add("155682");
104
        BoolQueryBuilder exersiceBoolQuery = QueryBuilders.boolQuery();
105
        for (String exerciseId: ids)
106
        {
107
            exersiceBoolQuery.must(QueryBuilders.termQuery("resourceId", exerciseId));
108
        }
109
        builder.query(exersiceBoolQuery);
110
111
        //4、将构造好的条件放入请求中
112
        request.source(builder);
113
114
        //5、开始执行发送request请求
115
        SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT);
116
117
118
119
        //6、开始处理返回的数据
120
        SearchHit[] hits = searchResponse.getHits().getHits();
121
        List<String> list = new ArrayList<String>();
122
        for (SearchHit hit : hits) {
123
            String hitString = hit.getSourceAsString();
124
            System.out.println(hitString);
125
            list.add(hitString);
126
        }
127
        return list;
128
129
130
131
132
    }
133
}

+ 11 - 0
src/main/java/com/ai/bss/es/esmanage/service/EsService.java

@ -0,0 +1,11 @@
1
package com.ai.bss.es.esmanage.service;
2
3
import com.ai.bss.es.esmanage.utils.RequestEntity;
4
import com.ai.bss.es.esmanage.utils.ResponseResult;
5
6
public interface EsService {
7
8
    ResponseResult executeEsEntity(RequestEntity requestEntity);
9
10
11
}

+ 137 - 0
src/main/java/com/ai/bss/es/esmanage/service/impl/EsServiceImpl.java

@ -0,0 +1,137 @@
1
package com.ai.bss.es.esmanage.service.impl;
2
3
import com.ai.abc.jpa.elastic.model.ElasticPage;
4
import com.ai.abc.jpa.elastic.model.PageInfo;
5
import com.ai.abc.jpa.elastic.model.TimeInfo;
6
import com.ai.abc.jpa.elastic.repository.ElasticEntityRepository;
7
import com.ai.abc.jpa.elastic.repository.impl.ElasticEntityRepositoryImpl;
8
import com.ai.bss.es.esmanage.service.EsService;
9
import com.ai.bss.es.esmanage.utils.RequestEntity;
10
import com.ai.bss.es.esmanage.utils.ResponseResult;
11
import com.alibaba.fastjson.JSONArray;
12
import com.alibaba.fastjson.JSONObject;
13
import com.alibaba.fastjson.TypeReference;
14
import lombok.extern.slf4j.Slf4j;
15
import org.elasticsearch.index.query.QueryBuilders;
16
import org.elasticsearch.index.query.TermsQueryBuilder;
17
import org.springframework.beans.factory.annotation.Value;
18
import org.springframework.stereotype.Service;
19
import org.springframework.util.StringUtils;
20
21
import java.util.*;
22
23
24
@Slf4j
25
@Service
26
public class EsServiceImpl implements EsService {
27
28
29
    @Value("${es.server:47.105.160.21:10020}")
30
    String esServer ;
31
32
33
    ElasticEntityRepository elasticEntityRepository = null;
34
35
    private ElasticEntityRepository getElasticEntityRepository(){
36
        if(elasticEntityRepository==null){
37
            elasticEntityRepository = new ElasticEntityRepositoryImpl();
38
            elasticEntityRepository.initServer(esServer);
39
        }
40
        return elasticEntityRepository;
41
    }
42
43
44
    @Override
45
    public ResponseResult executeEsEntity(RequestEntity requestEntity) {
46
47
        if(requestEntity==null){
48
            return null;
49
        }
50
51
        String methods = requestEntity.getMethods();
52
53
        if("SAVE".equals(methods)){
54
            saveEsEntity(requestEntity);
55
            return ResponseResult.sucess();
56
        }else{
57
            return findEsEntityList(requestEntity);
58
        }
59
60
    }
61
62
    private void saveEsEntity(RequestEntity requestEntity){
63
64
        getElasticEntityRepository().purePersist(requestEntity.getTableName(), "", requestEntity.getEntity());
65
    }
66
67
    private ResponseResult findEsEntityList(RequestEntity requestEntity) {
68
69
        PageInfo pageInfo = new PageInfo();
70
        int pageSize = requestEntity.getPageSize() == null ? 0 : requestEntity.getPageSize();
71
        int startNum = requestEntity.getStartNumber() == null ? 0 : requestEntity.getStartNumber()*pageSize;
72
        pageInfo.setStartNumber(startNum);
73
        pageInfo.setPageSize(pageSize);
74
        Map entityMap = null;
75
        if (!StringUtils.isEmpty(requestEntity.getEntity())) {
76
77
            String entityStr = requestEntity.getEntity();
78
            entityMap = JSONObject.parseObject(entityStr, new TypeReference<Map<String, Object>>() {});
79
        }
80
81
82
        Map fieldMap = null;
83
        String entityKey;
84
        if (entityMap != null && !entityMap.isEmpty()) {
85
            fieldMap = new HashMap();
86
            Iterator var10 = entityMap.entrySet().iterator();
87
88
            while(var10.hasNext()) {
89
                Map.Entry<String, Object> entry = (Map.Entry)var10.next();
90
                entityKey = (String)entry.getKey();
91
                if (entry.getValue() != null) {
92
                    TermsQueryBuilder termsQueryBuilder = null;
93
                    if (entry.getValue().getClass() == JSONArray.class) {
94
//                        this.log.debug("mapKey=" + sortType + ",entry.getValue()=" + entry.getValue());
95
//                        termsQueryBuilder = QueryBuilders.termsQuery(sortType, (ArrayList)entry.getValue());
96
                        fieldMap.put(entityKey,JSONArrayToArrayList((JSONArray)entry.getValue()));
97
                    } else {
98
                        String mapValue = entry.getValue().toString();
99
//                        termsQueryBuilder = QueryBuilders.termsQuery(sortType, new String[]{mapValue});
100
                        fieldMap.put(entityKey,mapValue);
101
                    }
102
103
                }
104
//                fieldMap.put(entityKey)
105
            }
106
        }
107
108
109
        Map sortMap = new HashMap();
110
        if(!StringUtils.isEmpty(requestEntity.getSortFieldName())){
111
            sortMap.put("sortFieldName",requestEntity.getSortFieldName());
112
            sortMap.put("sortType",requestEntity.getSortType());
113
        }
114
        TimeInfo timeInfo =new TimeInfo();
115
        timeInfo.setStartTime(requestEntity.getStartTime());
116
        timeInfo.setEndTime(requestEntity.getEndTime());
117
        timeInfo.setFieldName(requestEntity.getTimeFieldName());
118
        ElasticPage elasticPage = getElasticEntityRepository().findEntity(requestEntity.getTableName(), fieldMap, timeInfo, pageInfo,sortMap);
119
120
        return ResponseResult.sucess(elasticPage.getTotalSize(),elasticPage.getResults());
121
    }
122
123
    private ArrayList<String> JSONArrayToArrayList(JSONArray jsonArray){
124
        ArrayList<String> listdata = null;
125
        if (jsonArray != null) {
126
            listdata = new ArrayList<String>();
127
            for (int i=0;i<jsonArray.size();i++){
128
                listdata.add(jsonArray.getString(i));
129
            }
130
        }
131
        return listdata;
132
    }
133
134
    private Object findEsEntity(){
135
        return null;
136
    }
137
}

+ 100 - 0
src/main/java/com/ai/bss/es/esmanage/utils/CommonConsts.java

@ -0,0 +1,100 @@
1
package com.ai.bss.es.esmanage.utils;
2
3
/**
4
 * 公共常量类
5
 *
6
 * @author chencai
7
 */
8
public class CommonConsts {
9
    /**
10
     * 接口调用返回的成功编码
11
     */
12
    public static final String RESULT_CODE_SUCCESSFUL = "0";
13
14
    /**
15
     * 接口调用返回的失败编码
16
     */
17
    public static final String RESULT_CODE_FAILED = "1";
18
19
    /**
20
     * 接口调用返回的成功描述信息
21
     */
22
    public static final String RESULT_MSG_SUCCESSFUL = "成功";
23
24
    /**
25
     * 接口调用返回的失败的描述信息
26
     */
27
    public static final String RESULT_MSG_FAILED = "失败";
28
29
    /**
30
     * CSV文件列分隔符
31
     */
32
    public static final String CSV_COLUMN_SEPARATOR = ",";
33
    public static final String CSV_COLUMN_SEPARATOR2 = "|";
34
35
36
    /**
37
     * CSV文件列分隔符
38
     */
39
    public static final String CSV_RN = "\r\n";
40
41
    /**
42
     * 最小误差
43
     */
44
    public static final double EPSILON = 0.00000000000000022204;
45
46
    /**
47
     * 时间格式转化 yyyyMMdd_HHmmss
48
     */
49
    public static final String DATE_FORMAT_YYYYMMDD_HHMMSS = "yyyyMMdd_HHmmss";
50
51
    /**
52
     * 时间格式转化 yyyyMM
53
     */
54
    public static final String DATE_FORMAT_YYYYMM = "yyyyMM";
55
56
    /**
57
     * 时间格式转化 yyyyMMdd
58
     */
59
    public static final String DATE_FORMAT_YYYYMMDD = "yyyyMMdd";
60
61
    /**
62
     *
63
     */
64
    public static final String RESULT_MSG_CREATE_CSV_FAILED = "生成csv文件失败";
65
66
    /**
67
     * uspa组织类型-基础平台
68
     */
69
    public static final String USPA_ORG_TYPE_PLATFORM_ORG = "PLATFORM_ORG";
70
71
    /**
72
     * uspa组织类型-行业云
73
     */
74
    public static final String USPA_ORG_TYPE_INDUSTRY_ORG = "INDUSTRY_ORG";
75
76
    /**
77
     * uspa组织类型-客户
78
     */
79
    public static final String USPA_ORG_TYPE_CUSTOMER_ORG = "CUSTOMER_ORG";
80
81
82
83
    public static final String CHARSET_UTF8 = "UTF-8";
84
85
86
    public static final String HTTP_CONTENT_TYPE_JSON = "application/json; charset=utf-8";
87
88
    private CommonConsts() {}
89
90
91
//
92
//    /** 
93
//     * callsTimesMap存放方法被调用的次数O 
94
//     */
95
//    public  static ThreadLocal<Map<String, Long >> callsTimesMap = new ThreadLocal<Map<String, Long>>();// new ThreadLocal<>();
96
//    /** 
97
//     * methodTotalTmieMap存放方法总耗时 
98
//     */
99
//    public  static ThreadLocal<Map<String, Long >> methodTotalTmieMap = new ThreadLocal<Map<String, Long>>();
100
}

+ 35 - 0
src/main/java/com/ai/bss/es/esmanage/utils/ElasticSearchConfig.java

@ -0,0 +1,35 @@
1
package com.ai.bss.es.esmanage.utils;
2
3
import org.apache.http.HttpHost;
4
import org.elasticsearch.client.RestClient;
5
import org.elasticsearch.client.RestHighLevelClient;
6
import org.springframework.beans.factory.annotation.Value;
7
import org.springframework.context.annotation.Bean;
8
import org.springframework.context.annotation.Configuration;
9
10
/**
11
 * 给容器中注入一个RestHighLevelClient
12
 */
13
@Configuration
14
public class ElasticSearchConfig {
15
16
17
18
    @Value("${es.server:47.105.160.21}")
19
    String esServer ;
20
21
22
    @Value("${es.server.port:10020}")
23
    Integer esServerPort ;
24
25
    @Bean
26
    public RestHighLevelClient esRestClient(){
27
        RestHighLevelClient client = new RestHighLevelClient(
28
                RestClient.builder(
29
                        //在这里配置你的elasticsearch的情况
30
                        new HttpHost(esServer, esServerPort, "http")
31
                )
32
        );
33
        return client;
34
    }
35
}

+ 22 - 0
src/main/java/com/ai/bss/es/esmanage/utils/RequestEntity.java

@ -0,0 +1,22 @@
1
package com.ai.bss.es.esmanage.utils;
2
3
import lombok.Getter;
4
import lombok.Setter;
5
6
@Setter
7
@Getter
8
public class RequestEntity {
9
10
    private String tableName;
11
    private String type;
12
    private String methods;
13
    private String entity;
14
    private Integer startNumber;
15
    private Integer pageSize;
16
    private String startTime;
17
    private String endTime;
18
    private String timeFieldName;
19
    private String sortFieldName;
20
    private String sortType;
21
22
}

+ 105 - 0
src/main/java/com/ai/bss/es/esmanage/utils/ResponseResult.java

@ -0,0 +1,105 @@
1
package com.ai.bss.es.esmanage.utils;
2
3
4
import lombok.Getter;
5
import lombok.NoArgsConstructor;
6
import lombok.Setter;
7
8
/**
9
 * 接口响应参数公共类
10
 *
11
 * @author chencai
12
 */
13
@NoArgsConstructor
14
@Getter
15
@Setter
16
public class ResponseResult<T> {
17
    /**
18
     * 结果编码
19
     */
20
    private String resultCode;
21
22
    /**
23
     * 结果信息
24
     */
25
    private String resultMsg;
26
27
    /**
28
     * 调用轨迹标识
29
     */
30
    private Long traceId;
31
32
    /**
33
     * 结果集数量
34
     */
35
    private Long totalResultNumber;
36
37
    /**
38
     * 结果集信息
39
     */
40
    private T result;
41
42
    private ResponseResult(String resultCode, String resultMsg) {
43
        this.resultCode = resultCode;
44
        this.resultMsg = resultMsg;
45
    }
46
47
    private ResponseResult(String resultCode, String resultMsg, T result) {
48
        this.resultCode = resultCode;
49
        this.resultMsg = resultMsg;
50
        this.result = result;
51
    }
52
53
    private ResponseResult(String resultCode, String resultMsg, Long totalResuleNumber,
54
                           T result) {
55
        this.resultCode = resultCode;
56
        this.resultMsg = resultMsg;
57
        this.totalResultNumber = totalResuleNumber;
58
        this.result = result;
59
    }
60
61
    private ResponseResult(String resultCode, String resultMsg, Long traceId, Long totalResuleNumber,
62
                           T result) {
63
        this.resultCode = resultCode;
64
        this.resultMsg = resultMsg;
65
        this.traceId = traceId;
66
        this.totalResultNumber = totalResuleNumber;
67
        this.result = result;
68
    }
69
    
70
    public static <T> ResponseResult<T> sucess() {
71
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_SUCCESSFUL, CommonConsts.RESULT_MSG_SUCCESSFUL);
72
    }
73
74
    public static <T> ResponseResult<T> sucess(String resultMsg) {
75
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_SUCCESSFUL, resultMsg);
76
    }
77
78
    public static <T> ResponseResult<T> sucess(T result) {
79
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_SUCCESSFUL, CommonConsts.RESULT_MSG_SUCCESSFUL, result);
80
    }
81
82
    public static <T> ResponseResult<T> sucess(long totalResuleNumber, T result) {
83
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_SUCCESSFUL, CommonConsts.RESULT_MSG_SUCCESSFUL, totalResuleNumber, result);
84
    }
85
86
    public static <T> ResponseResult<T> sucess(Long traceId, Long totalResuleNumber, T result) {
87
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_SUCCESSFUL, CommonConsts.RESULT_MSG_SUCCESSFUL, traceId, totalResuleNumber, result);
88
    }
89
90
    public static <T> ResponseResult<T> error() {
91
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_FAILED, CommonConsts.RESULT_MSG_FAILED);
92
    }
93
94
    public static <T> ResponseResult<T> error(String errorMsg) {
95
        return new ResponseResult<T>(CommonConsts.RESULT_CODE_FAILED, errorMsg);
96
    }
97
98
    public static <T> ResponseResult<T> error(String resultCode, String errorMsg) {
99
        return new ResponseResult<T>(resultCode, errorMsg);
100
    }
101
102
    public static <T> ResponseResult<T> error(String resultCode, String errorMsg, Long traceId) {
103
        return new ResponseResult<T>(resultCode, errorMsg, traceId, 0L, null);
104
    }
105
}

+ 6 - 0
src/main/resources/application.properties

@ -0,0 +1,6 @@
1
server.port=8111
2
spring.application.name=elastic
3
4
5
es.server=47.105.160.21:10020
6
es.server.port=10020

+ 6 - 0
src/main/resources/environment/dev/application.properties

@ -0,0 +1,6 @@
1
server.port=8111
2
spring.application.name=elastic
3
4
5
es.server=47.105.160.21:10020
6
es.server.port=10020

+ 6 - 0
src/main/resources/environment/product/application.properties

@ -0,0 +1,6 @@
1
server.port=8111
2
spring.application.name=elastic
3
4
5
es.server=47.105.160.21:10020
6
es.server.port=10020

+ 6 - 0
src/main/resources/environment/test/application.properties

@ -0,0 +1,6 @@
1
server.port=8111
2
spring.application.name=elastic
3
4
5
es.server=47.105.160.21:10020
6
es.server.port=10020

+ 155 - 0
src/test/java/com/ai/bss/es/esmanage/EsManageApplicationTests.java

@ -0,0 +1,155 @@
1
package com.ai.bss.es.esmanage;
2
3
import com.ai.abc.jpa.elastic.model.ElasticPage;
4
import com.ai.abc.jpa.elastic.model.PageInfo;
5
import com.ai.abc.jpa.elastic.model.TimeInfo;
6
import com.ai.abc.jpa.elastic.repository.ElasticEntityRepository;
7
import com.ai.abc.jpa.elastic.repository.impl.ElasticEntityRepositoryImpl;
8
import com.alibaba.fastjson.JSONObject;
9
import com.alibaba.fastjson.TypeReference;
10
import org.elasticsearch.action.search.SearchRequest;
11
import org.elasticsearch.action.search.SearchRequestBuilder;
12
import org.elasticsearch.action.search.SearchResponse;
13
import org.elasticsearch.client.RequestOptions;
14
import org.elasticsearch.client.RestHighLevelClient;
15
import org.elasticsearch.index.query.BoolQueryBuilder;
16
import org.elasticsearch.index.query.MatchQueryBuilder;
17
import org.elasticsearch.index.query.QueryBuilders;
18
import org.elasticsearch.search.SearchHit;
19
import org.elasticsearch.search.aggregations.AggregationBuilders;
20
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
21
import org.elasticsearch.search.aggregations.metrics.AvgAggregationBuilder;
22
import org.elasticsearch.search.builder.SearchSourceBuilder;
23
import org.junit.jupiter.api.Test;
24
import org.springframework.beans.factory.annotation.Autowired;
25
import org.springframework.boot.test.context.SpringBootTest;
26
27
import java.io.IOException;
28
import java.text.SimpleDateFormat;
29
import java.util.*;
30
31
@SpringBootTest
32
class EsManageApplicationTests {
33
34
35
    @Autowired
36
    private RestHighLevelClient client;
37
38
    @Test
39
    void contextLoads()  {
40
41
        ElasticEntityRepository elasticEntityRepository = new ElasticEntityRepositoryImpl();
42
        elasticEntityRepository.initServer("47.105.160.21:10020");
43
//        JSONObject jsonObject = new JSONObject();
44
//        jsonObject.put("id", "113");
45
//        jsonObject.put("type", "1");
46
//        jsonObject.put("name", "yaxin12");
47
//        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
48
//        jsonObject.put("create_date", df.format(new Date()));
49
//
50
//        //插入
51
//        String entity = jsonObject.toString();
52
//
53
//        entity = "{\"dataExchangeProtocol\":\"Hex\",\"detailInfo\":\"2454585858002a0efa90600ef9f1000000b000b01409020a2d1c45672b1f024e1d0a12010000874d00b0\",\"eventSpecId\":57700004350,\"eventSpecName\":\"定位\",\"eventTime\":1603255716747,\"eventTimeStr\":\"2020-10-21 12:48:36 747\",\"eventTypeName\":\"上行消息\",\"imei\":\"\",\"messageTopic\":\"DW\",\"messageTypeId\":57700000031,\"physicalProtocol\":\"TCP\",\"resourceId\":981489,\"resourceName\":\"手持定位仪001\",\"resourceSpecId\":57700004344,\"terminalEventId\":21700,\"terminalSN\":\"\"}";
54
//        elasticEntityRepository.purePersist("es_terminal_event", "", entity);
55
56
57
        //查询
58
        Map jsonSearch = new HashMap();
59
        //jsonSearch.put("id", "101");
60
//        jsonSearch.put("type", "1");
61
        //jsonSearch.put("name", "yaxin");
62
63
        List<String> ids = new ArrayList<>();
64
        ids.add("981489");
65
        ids.add("155682");
66
        jsonSearch.put("resourceId", ids);
67
68
        PageInfo pageInfo = new PageInfo();
69
        pageInfo.setStartNumber(0);
70
        pageInfo.setPageSize(20);
71
//        Map jsonSearchMap = JSONObject.parseObject(jsonSearch.toJSONString(), new TypeReference<Map<String, String>>(){});
72
//        Map sortMap = new HashMap();
73
        TimeInfo timeInfo = new TimeInfo();
74
        timeInfo.setFieldName("eventTimeStr");
75
        timeInfo.setStartTime("2020-10-28 00:09:51");
76
        timeInfo.setEndTime("2020-10-28 00:09:53");
77
        ElasticPage elasticPage = elasticEntityRepository.findEntity("es_terminal_event", null, timeInfo, pageInfo,null);
78
        System.out.println(elasticPage.getResults());
79
80
81
82
83
//        List<String> ids = new ArrayList();
84
//        ids.add("981489");
85
//        ids.add("155682");
86
//        BoolQueryBuilder exersiceBoolQuery = QueryBuilders.boolQuery();
87
//        for (String exerciseId: ids)
88
//        {
89
//            exersiceBoolQuery.must(QueryBuilders.termQuery("resourceId", exerciseId));
90
//        }
91
//
92
//        SearchRequest request = new SearchRequest("es_terminal_event");
93
94
        //5、开始执行发送request请求
95
//        SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT);
96
97
//        SearchRequestBuilder searchRequestBuilder = client.prepareSearch("index name").setTypes("type name")
98
//                         .setQuery(exersiceBoolQuery)
99
//                        .addHighlightedField("*")/*星号表示在所有字段都高亮*/.setHighlighterRequireFieldMatch(false)//配置高亮显示搜索结果
100
//                .setHighlighterPreTags("<高亮前缀标签>").setHighlighterPostTags("<高亮后缀标签>");//配置高亮显示搜索结果
101
//
102
//                         searchRequestBuilder = searchRequestBuilder.addAggregation(AggregationBuilders.terms("agg1(聚类返回时根据此key获取聚类结果)")
103
//                                         .size(1000)/*返回1000条聚类结果*/.field("要在文档中聚类的字段,如果是嵌套的则用点连接父子字段,如【person.company.name】"));
104
//
105
//        SearchResponse searchResponse = searchRequestBuilder.setFrom((0) * 10)//分页起始位置(跳过开始的n个)
106
//                         .setSize(10)//本次返回的文档数量
107
//                         .execute().actionGet();//执行搜索
108
109
110
    }
111
112
113
    @Test
114
    List<String> inSearch() throws IOException {
115
        //1、创建查询请求,规定查询的索引
116
        SearchRequest request = new SearchRequest("es_terminal_event");
117
        //2、创建条件构造
118
        SearchSourceBuilder builder = new SearchSourceBuilder();
119
//        //3、构造条件
120
//        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("address", "Lane");
121
//        builder.query(matchQueryBuilder);
122
//        //聚合年龄分布
123
//        TermsAggregationBuilder ageAgg = AggregationBuilders.terms("ageAgg").field("age");
124
//        builder.aggregation(ageAgg);
125
////
126
////        //聚合平均年龄
127
//        AvgAggregationBuilder balanceAvg = AggregationBuilders.avg("balanceAvg").field("balance");
128
//        builder.aggregation(balanceAvg);
129
130
        List<String> ids = new ArrayList();
131
        ids.add("981489");
132
        ids.add("155682");
133
        BoolQueryBuilder exersiceBoolQuery = QueryBuilders.boolQuery();
134
        for (String exerciseId : ids) {
135
            exersiceBoolQuery.must(QueryBuilders.termQuery("resourceId", exerciseId));
136
        }
137
        builder.query(exersiceBoolQuery);
138
139
        //4、将构造好的条件放入请求中
140
        request.source(builder);
141
142
        //5、开始执行发送request请求
143
        SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT);
144
        //6、开始处理返回的数据
145
        SearchHit[] hits = searchResponse.getHits().getHits();
146
        List<String> list = new ArrayList<String>();
147
        for (SearchHit hit : hits) {
148
            String hitString = hit.getSourceAsString();
149
            System.out.println(hitString);
150
            list.add(hitString);
151
        }
152
        return list;
153
    }
154
155
    }