Spring data elasticsearch根据请求参数动态创建索引,percolator支持并通过elasticsearch操作创建索引

Spring data elasticsearch根据请求参数动态创建索引,percolator支持并通过elasticsearch操作创建索引,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我先通读一遍 我的要求 我想用渗滤器。spring data elasticsearch中是否支持它?我在上面的链接中没有看到任何内容,尽管我知道渗透和索引是一样的(从使用SpringDataElasticSearch的角度来看)。所以我可以使用spring data elasticsearch的索引部分,但只需检查是否有特定于percolator的索引 我想动态创建一个索引。我知道我可以使用中提到的SpEL模板表达式实现这一点,但我的情况略有不同,我将通过RequestParam获取索引名,作

我先通读一遍

我的要求

  • 我想用渗滤器。spring data elasticsearch中是否支持它?我在上面的链接中没有看到任何内容,尽管我知道渗透和索引是一样的(从使用SpringDataElasticSearch的角度来看)。所以我可以使用spring data elasticsearch的索引部分,但只需检查是否有特定于percolator的索引
  • 我想动态创建一个索引。我知道我可以使用中提到的SpEL模板表达式实现这一点,但我的情况略有不同,我将通过RequestParam获取索引名,作为API调用的一部分。因此,就我所知,这意味着我不能使用SpEL或尝试类似的方法
  • 我知道我可以使用ElasticsearchOperations或ElasticsearchRepository来创建索引。由于#2(即通过请求参数的索引名),我认为ElasticsearchOperations更适合,但我看到IndexOperations有助于createMapping、createSettings,但不是两者同时进行。我也看到了putMapping,但我没有看到任何同时显示映射和设置的内容。我想两者兼得的原因是我想从下面的内容开始
  • 底线:-如何使用ElasticsearchOperations创建带有映射和设置的索引(索引名称将通过请求参数动态显示)?

    非常感谢任何线索/帮助

    首先非常感谢@p.J.Meisch。把你的两个评论都投了赞成票,以示感谢

    下面是我的工作。下面可能会帮助其他人在未来

     Document mapping = Document.create().fromJson("{\n" +
                    "\n" +
                    "    \"properties\": {\n" +
                    "      \"message\": {\n" +
                    "        \"type\": \"text\"\n" +
                    "      },\n" +
                    "      \"query\": {\n" +
                    "        \"type\": \"percolator\"\n" +
                    "      }\n" +
                    "    }\n" +
                    "\n" +
                    "}");
     Map<String, Object> settings = ImmutableMap.of( "number_of_shards" ,2,"number_of_replicas",1);
     elasticsearchOperations.indexOps(IndexCoordinates.of("whatever-indexname-you-need")).create(settings,mapping);
    
    Document mapping=Document.create().fromJson(“{\n”+
    “\n”+
    “\”属性\“:{\n”+
    “\”消息\“:{\n”+
    “\”类型\“:\”文本\“\n”+
    },\n+
    “\”查询\“:{\n”+
    “\”类型\“:\”过滤器\“\n”+
    “}\n”+
    “}\n”+
    “\n”+
    "}");
    映射设置=ImmutableMap.of(“碎片的数量”,2,“副本的数量”,1);
    elasticsearchOperations.indexOps(IndexCoordinates.of(“您需要的任何indexname”))。创建(设置、映射);
    
    IndexOperations.createWithMapping()
    从当前版本4.2开始,它在一次调用中创建带有设置和映射的索引。0@P.J.Meisch-感谢您的回复和宝贵时间。由于我希望索引名是动态的(即我接受作为API端点中的参数),我将无法使用任何需要@Document(indexName=“索引名”)。
    elasticsearchOperations.indexOps(IndexCoordinates.of(“您需要的任何indexName”))。创建(设置、映射)
     Document mapping = Document.create().fromJson("{\n" +
                    "\n" +
                    "    \"properties\": {\n" +
                    "      \"message\": {\n" +
                    "        \"type\": \"text\"\n" +
                    "      },\n" +
                    "      \"query\": {\n" +
                    "        \"type\": \"percolator\"\n" +
                    "      }\n" +
                    "    }\n" +
                    "\n" +
                    "}");
     Map<String, Object> settings = ImmutableMap.of( "number_of_shards" ,2,"number_of_replicas",1);
     elasticsearchOperations.indexOps(IndexCoordinates.of("whatever-indexname-you-need")).create(settings,mapping);