Skip to content

Commit 7bf4b54

Browse files
shuangli-zxinyualpengjunquan-lzane-neo
authored
[FEATURE] Add Index Insight Feature (#4088)
* [WIP] Initial version of index insight cron job Signed-off-by: shuangli-z <[email protected]> * merge Signed-off-by: xinyual <[email protected]> * add index insight restful api Signed-off-by: xinyual <[email protected]> * fix next token Signed-off-by: xinyual <[email protected]> * fix next token Signed-off-by: xinyual <[email protected]> * [WIP] initial version of IndexInsightTask design Signed-off-by: shuangli-z <[email protected]> * add access controller Signed-off-by: xinyual <[email protected]> * Parallelize LLM calls in FieldDescriptionTask by batching Signed-off-by: shuangli-z <[email protected]> * add waiting logic when prerequisite tasks are in GENERATING status Signed-off-by: shuangli-z <[email protected]> * remove MLIndexInsightType.ALL and Index Insight List in api since IndexInsightTask is now processed one at a time Signed-off-by: shuangli-z <[email protected]> * Change logic of sample fetching Signed-off-by: shuangli-z <[email protected]> * add put container Signed-off-by: xinyual <[email protected]> * Implemented basic execute operation - TODO: Add prerequisite chain logic Signed-off-by: shuangli-z <[email protected]> * Add log related index check task for index insight Signed-off-by: shuangli-z <[email protected]> * update LogRelatedIndexCheckTask to match interface modifications Signed-off-by: shuangli-z <[email protected]> * Add logic to execute prerequisite task(s) first Signed-off-by: shuangli-z <[email protected]> * add put index isight container Signed-off-by: xinyual <[email protected]> * Remove redundant task status checks in GetIndexInsightTransportAction Signed-off-by: shuangli-z <[email protected]> * add put/delete container API Signed-off-by: xinyual <[email protected]> * refactor: remove deprecated implementation of index insight cron job Signed-off-by: shuangli-z <[email protected]> * merge latest code Signed-off-by: xinyual <[email protected]> * pass tenant id and add agent execution logic Signed-off-by: xinyual <[email protected]> * merge from main Signed-off-by: xinyual <[email protected]> * add aggregation Signed-off-by: xinyual <[email protected]> * change dsl Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * use agent for LLM calls and container for insights storage Signed-off-by: shuangli-z <[email protected]> * resolve statistical data processing bugs and other minor fixes Signed-off-by: shuangli-z <[email protected]> * refine statistical task Signed-off-by: xinyual <[email protected]> * add license Signed-off-by: shuangli-z <[email protected]> * spotless updates Signed-off-by: shuangli-z <[email protected]> * remove uselessResponse Signed-off-by: xinyual <[email protected]> * remove deprecated code Signed-off-by: shuangli-z <[email protected]> * use correct return status Signed-off-by: xinyual <[email protected]> * set order for StatisticalDataTask result Signed-off-by: shuangli-z <[email protected]> * add UT Signed-off-by: xinyual <[email protected]> * add failure cases Signed-off-by: xinyual <[email protected]> * add UT for get index insight action Signed-off-by: xinyual <[email protected]> * add UT for delete/put container Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * delete IndexDescriptionTask and modify parsing logic in FieldDescriptionTask Signed-off-by: shuangli-z <[email protected]> * add UT for response and request Signed-off-by: xinyual <[email protected]> * add license Signed-off-by: xinyual <[email protected]> * address PR comments in FieldDescriptionTask.java Signed-off-by: shuangli-z <[email protected]> * fix simple commit Signed-off-by: xinyual <[email protected]> * optimize logic creating container Signed-off-by: xinyual <[email protected]> * fix comment Signed-off-by: xinyual <[email protected]> * Reorganize methods in IndexInsightTask and address PR comments Signed-off-by: shuangli-z <[email protected]> * apply spotless Signed-off-by: shuangli-z <[email protected]> * add IT Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * modify prompt in FieldDescriptionTask to avoid specific examples Signed-off-by: shuangli-z <[email protected]> * add merge helper for statistical data task Signed-off-by: xinyual <[email protected]> * add IT Signed-off-by: xinyual <[email protected]> * use pre defined mapping Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * add Tool Signed-off-by: xinyual <[email protected]> * add index insight tool Signed-off-by: xinyual <[email protected]> * add UT for index insight and improve code structure Signed-off-by: shuangli-z <[email protected]> * add more ut Signed-off-by: xinyual <[email protected]> * add LogRelatedIndexCheckTaskTests Signed-off-by: juqnuanp <[email protected]> * revert useless change Signed-off-by: xinyual <[email protected]> * add UT for IndexInsightTask interface and its implementations Signed-off-by: shuangli-z <[email protected]> * resolve comments Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * address CR comments Signed-off-by: shuangli-z <[email protected]> * address CR comments Signed-off-by: shuangli-z <[email protected]> * fix UT Signed-off-by: shuangli-z <[email protected]> * address PR comments Signed-off-by: shuangli-z <[email protected]> * change container name keyword Signed-off-by: xinyual <[email protected]> * add try catch exception Signed-off-by: xinyual <[email protected]> * add more tests for LogRelatedIndexCheckTaskTests Signed-off-by: juqnuanp <[email protected]> * add UT for LogRelatedIndexCheckTaskTests and refine other tests Signed-off-by: shuangli-z <[email protected]> * modify put api to put index insight config Signed-off-by: xinyual <[email protected]> * modify put api to put index insight config Signed-off-by: xinyual <[email protected]> * add IndexInsightTestHelper to reduce code duplication Signed-off-by: shuangli-z <[email protected]> * modifying API Signed-off-by: xinyual <[email protected]> * add get config API Signed-off-by: xinyual <[email protected]> * rename Signed-off-by: xinyual <[email protected]> * add MLIndexInsightType.ALL Signed-off-by: shuangli-z <[email protected]> * add license Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * add UT Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * add UT for MLIndexInsightType.ALL Signed-off-by: shuangli-z <[email protected]> * fix IT Signed-off-by: xinyual <[email protected]> * add UT Signed-off-by: xinyual <[email protected]> * add IT Signed-off-by: xinyual <[email protected]> * rename Signed-off-by: xinyual <[email protected]> * refine code structure for MLIndexInsightType.ALL execution Signed-off-by: shuangli-z <[email protected]> * filter useless in statistical and field description Signed-off-by: xinyual <[email protected]> * fix statistical threshold Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * fix IT Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * set to very low result Signed-off-by: xinyual <[email protected]> * remove useless IT Signed-off-by: xinyual <[email protected]> * add script build Signed-off-by: xinyual <[email protected]> * add pattern match Signed-off-by: xinyual <[email protected]> * move storage to system index Signed-off-by: xinyual <[email protected]> * refine pattern match logic Signed-off-by: shuangli-z <[email protected]> * use sdkclient to search/get/put index insight Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: shuangli-z <[email protected]> * address PR comments Signed-off-by: shuangli-z <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * fix IT Signed-off-by: xinyual <[email protected]> * fixLogic Signed-off-by: xinyual <[email protected]> * add and fix UT Signed-off-by: shuangli-z <[email protected]> * fix comment for zna Signed-off-by: xinyual <[email protected]> * remove useless cide Signed-off-by: xinyual <[email protected]> * fix comment 2 Signed-off-by: xinyual <[email protected]> * fix error message logic Signed-off-by: xinyual <[email protected]> * add one more ut Signed-off-by: xinyual <[email protected]> * add ut for tool Signed-off-by: xinyual <[email protected]> * remove deprecated variable storageIndex Signed-off-by: shuangli-z <[email protected]> * add filter by LLM Signed-off-by: xinyual <[email protected]> * apply spotless Signed-off-by: xinyual <[email protected]> * change to empty return Signed-off-by: xinyual <[email protected]> * change remaining number Signed-off-by: xinyual <[email protected]> * filter by sample Signed-off-by: xinyual <[email protected]> * skip filter when column number is very few Signed-off-by: xinyual <[email protected]> * make pattern static Signed-off-by: xinyual <[email protected]> * address PR comments Signed-off-by: shuangli-z <[email protected]> * address PR comments: add AbstractIndexInsightTask and remove IndexInsightUtils Signed-off-by: shuangli-z <[email protected]> * add permission check Signed-off-by: xinyual <[email protected]> * minor fixes Signed-off-by: shuangli-z <[email protected]> * minor fixes Signed-off-by: shuangli-z <[email protected]> * Update plugin/src/main/java/org/opensearch/ml/action/IndexInsight/GetIndexInsightTransportAction.java Co-authored-by: zane-neo <[email protected]> Signed-off-by: Xinyuan Lu <[email protected]> * Update ml-algorithms/src/main/java/org/opensearch/ml/engine/tools/IndexInsightTool.java Co-authored-by: zane-neo <[email protected]> Signed-off-by: Xinyuan Lu <[email protected]> * fix comment for zaniu Signed-off-by: xinyual <[email protected]> * address PR comments and minor fixes Signed-off-by: shuangli-z <[email protected]> * add permission check Signed-off-by: xinyual <[email protected]> * minor fixes Signed-off-by: shuangli-z <[email protected]> * fix comment for zaniu Signed-off-by: xinyual <[email protected]> * minor fixes Signed-off-by: shuangli-z <[email protected]> * fix bugs caused by rebasing Signed-off-by: shuangli-z <[email protected]> * fix pr comment Signed-off-by: xinyual <[email protected]> * change pattern match logic Signed-off-by: shuangli-z <[email protected]> * address PR comments Signed-off-by: shuangli-z <[email protected]> * add validation logic to check if index pattern exist Signed-off-by: shuangli-z <[email protected]> * fix UT Signed-off-by: xinyual <[email protected]> * add a cluster setting and close it by default Signed-off-by: xinyual <[email protected]> * Delete store logic for StatisticalDataTask when pattern matched Signed-off-by: shuangli-z <[email protected]> * fix error message Signed-off-by: xinyual <[email protected]> --------- Signed-off-by: shuangli-z <[email protected]> Signed-off-by: xinyual <[email protected]> Signed-off-by: juqnuanp <[email protected]> Signed-off-by: Xinyuan Lu <[email protected]> Co-authored-by: xinyual <[email protected]> Co-authored-by: pengjunquan-l <[email protected]> Co-authored-by: juqnuanp <[email protected]> Co-authored-by: zane-neo <[email protected]>
1 parent 467a8ee commit 7bf4b54

File tree

67 files changed

+8480
-7
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+8480
-7
lines changed

common/src/main/java/org/opensearch/ml/common/CommonValue.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ public class CommonValue {
3333
public static String HOT_BOX_TYPE = "hot";
3434
// warm node
3535
public static String WARM_BOX_TYPE = "warm";
36+
public static final String ML_INDEX_INSIGHT_CONFIG_INDEX = ".plugins-ml-index-insight-config";
37+
public static final String ML_INDEX_INSIGHT_STORAGE_INDEX = ".plugins-ml-index-insight-storage";
38+
3639
public static final String ML_MODEL_GROUP_INDEX = ".plugins-ml-model-group";
3740
public static final String ML_MODEL_INDEX = ".plugins-ml-model";
3841
public static final String ML_TASK_INDEX = ".plugins-ml-task";
@@ -68,6 +71,8 @@ public class CommonValue {
6871
public static final String ML_MCP_SESSION_MANAGEMENT_INDEX_MAPPING_PATH = "index-mappings/ml_mcp_session_management.json";
6972
public static final String ML_MCP_TOOLS_INDEX_MAPPING_PATH = "index-mappings/ml_mcp_tools.json";
7073
public static final String ML_JOBS_INDEX_MAPPING_PATH = "index-mappings/ml_jobs.json";
74+
public static final String ML_INDEX_INSIGHT_CONFIG_INDEX_MAPPING_PATH = "index-mappings/ml_index_insight_config.json";
75+
public static final String ML_INDEX_INSIGHT_STORAGE_INDEX_MAPPING_PATH = "index-mappings/ml_index_insight_storage.json";
7176

7277
// Calculate Versions independently of OpenSearch core version
7378
public static final Version VERSION_2_11_0 = Version.fromString("2.11.0");
@@ -111,4 +116,9 @@ public class CommonValue {
111116

112117
// TOOL Constants
113118
public static final String TOOL_INPUT_SCHEMA_FIELD = "input_schema";
119+
120+
public static final String INDEX_INSIGHT_AGENT_NAME = "os_index_insight_agent";
121+
public static final long INDEX_INSIGHT_GENERATING_TIMEOUT = 3 * 60 * 1000;
122+
public static final long INDEX_INSIGHT_UPDATE_INTERVAL = 24 * 60 * 60 * 1000;
123+
114124
}

common/src/main/java/org/opensearch/ml/common/MLIndex.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
import static org.opensearch.ml.common.CommonValue.ML_CONNECTOR_INDEX_MAPPING_PATH;
1616
import static org.opensearch.ml.common.CommonValue.ML_CONTROLLER_INDEX;
1717
import static org.opensearch.ml.common.CommonValue.ML_CONTROLLER_INDEX_MAPPING_PATH;
18+
import static org.opensearch.ml.common.CommonValue.ML_INDEX_INSIGHT_CONFIG_INDEX;
19+
import static org.opensearch.ml.common.CommonValue.ML_INDEX_INSIGHT_CONFIG_INDEX_MAPPING_PATH;
20+
import static org.opensearch.ml.common.CommonValue.ML_INDEX_INSIGHT_STORAGE_INDEX;
21+
import static org.opensearch.ml.common.CommonValue.ML_INDEX_INSIGHT_STORAGE_INDEX_MAPPING_PATH;
1822
import static org.opensearch.ml.common.CommonValue.ML_JOBS_INDEX;
1923
import static org.opensearch.ml.common.CommonValue.ML_JOBS_INDEX_MAPPING_PATH;
2024
import static org.opensearch.ml.common.CommonValue.ML_MCP_SESSION_MANAGEMENT_INDEX_MAPPING_PATH;
@@ -50,7 +54,9 @@ public enum MLIndex {
5054
MEMORY_CONTAINER(ML_MEMORY_CONTAINER_INDEX, false, ML_MEMORY_CONTAINER_INDEX_MAPPING_PATH),
5155
MCP_SESSION_MANAGEMENT(MCP_SESSION_MANAGEMENT_INDEX, false, ML_MCP_SESSION_MANAGEMENT_INDEX_MAPPING_PATH),
5256
MCP_TOOLS(MCP_TOOLS_INDEX, false, ML_MCP_TOOLS_INDEX_MAPPING_PATH),
53-
JOBS(ML_JOBS_INDEX, false, ML_JOBS_INDEX_MAPPING_PATH);
57+
JOBS(ML_JOBS_INDEX, false, ML_JOBS_INDEX_MAPPING_PATH),
58+
INDEX_INSIGHT_CONFIG(ML_INDEX_INSIGHT_CONFIG_INDEX, false, ML_INDEX_INSIGHT_CONFIG_INDEX_MAPPING_PATH),
59+
INDEX_INSIGHT_STORAGE(ML_INDEX_INSIGHT_STORAGE_INDEX, false, ML_INDEX_INSIGHT_STORAGE_INDEX_MAPPING_PATH);
5460

5561
private final String indexName;
5662
// whether we use an alias for the index

0 commit comments

Comments
 (0)