当前位置: 首页 > 面试题库 >

Spring-Data-Elasticsearch设置:Spring找不到配置文件?

端木野
2023-03-14
问题内容

通过Spring-Data-Elasticsearch,我试图使用在 elasticsearch_config.json中 定义的分析器和映射。
该JSON文件位于 / src / main / resources 文件夹中。

我的JAVA模型如下所示:

@Document(indexName = "test", type="Tweet")
@Setting(settingPath = "/elasticsearch_config.json")
public class Tweet {

    @Id
    private String idStr;

    /** other fields, getters and setters are omitted **/

}

elasticsearch_config.json 包含设置和映射:

{
    "settings": { /* some filters */},
    "mappings": { /* some types' mappings*/ }
}

我尝试了curl,索引/搜索没有问题。

我的问题

我想使用 @Setting 配置我的映射(而不是curl),但是 @Setting 注释似乎不起作用。随着 @Setting
,当我用卷曲来检查我的映射,我没有得到我所定义的所有映射 elasticsearch_config.json

curl -X GET "localhost:9200/test/_mapping?pretty=true"

我的猜测是Spring无法正确找到 elasticsearch_config.json 。但是我已经检查过 myproject / src /
main / resources
在我项目的构建路径中了…

感谢您的帮助,谢谢!

注意 :我发现此解决方案可能有效,但是: 1.我不知道nodeBuilder的来源。2.我可能错了,但是,不是仅使用 @Setting 的解决方案吗?

更新:我的映射 我将分析器与映射分开。 mappings.json 看起来像这样:

{
  "mappings": {
    "Tweet": {
      "_id": {
        "path":"idStr",
        "properties": {
          "idStr": {
            "type":"string",
            "index":"not_analyzed",
            "store":true
          }
        }
      },
      "numeric_detection" : true,
      "dynamic_templates": [
       {
          "id_fields": {
          "match":"userId*",
            "match_mapping_type": "string",
            "mapping": {
              "type":"string",
              "index":"no",
              "store":true
            }
          }
        },
        {
          "name_fields": {
            "match":"*Name",
            "match_mapping_type": "string",
            "mapping": {
              "type":"string",
              "index":"no",
              "store":true
            }
          }
        }
      ],
      "properties": {
        "text": {
          "type": "string",
          "index":"analyzed",
          "analyzer":"custom_analyzer",
          "store": true
        },
        "createdAt": {
          "type": "date",
          "format": "yyyy-MM-dd",
          "index":"analyzed",
          "store": true
        },
        "testVersion": {
          "type": "integer",
          "index":"not_analyzed",
          "store":false
        }
      }

    }

  }
}

问题答案:

终于发现为什么它不起作用了!!

就像Val所说的那样,我将我的 elasticsearch_config.json 文件分解为 settings.json
mappings.json

我的项目/ src / main /资源架构:

- mappings
    + mappings.json
- settings
    + settings.json

@Document(indexName = "test", type="SentimentTweet")
@Setting(settingPath = "/settings/settings.json")
@Mapping(mappingPath = "/mappings/mappings.json")

但是,在 mappings.json中 ,我应该省略字段 映射, 并直接放置 映射 的内容。

代替:

{
    "mappings": {
        "Tweet": {
             /* MAPPINGS CONFIGURATION ARE OMITTED */
         }
    }
}

只写在mappings.json中:

{
    "Tweet": {
         /* MAPPINGS CONFIGURATION ARE OMITTED */
     }
}

应该对settings.json做同样的事情



 类似资料:
  • 我正在尝试使用弹性搜索版本6的spring数据。由于这个版本只有REST客户端,所以spring-data-elasticsearch唯一支持它的版本是3.1.0.rc2。Spring发布了该版本的文档,但没有关于如何配置它以连接到弹性搜索的REST客户端的信息。有人知道如何找到这些信息吗? 同样有趣的是,文档给出了一个如何创建嵌入式实例的示例,但是它所说的要使用的所有类/注释都在spring-d

  • 我在配置spring data elasticsearch时遇到了问题,我遵循了这里提到的Crud存储库spring bean配置的过程。但我得到了错误: 线程“main”org.springframework.beans.factory.beanCreationException中出现异常:创建名为“customer service”的bean时出错:注入资源依赖项失败;嵌套异常为org.spr

  • 我使用spring-data-elasticsearch的3.0.0版本在使用过程中出现了一个问题,有时成功,有时会报错 配置的节点均不可用:[{#Transport#-1}{S0DLwdVZRk-Osl4KgxM91A}{127.0.0.1}{127.0.0.1:9300} Elasticsearch版本为5.4.0。 我的spring配置文件是 这个错误不是经常出现,而是偶尔出现

  • 我有一个用于使用elasticsearch GeopointSpring引导应用程序。当我保存弹性索引并创建geoDistanceQuery时,我得到了QueryShardException[未能找到geo_point字段[customer]]异常。 我的文件; 储存库; 保存和获取方法;

  • 我没有什么问题 为什么即使在明确提到要查找的位置之后,仍然没有读取配置目录中的文件? 我在项目中有自己的依赖项,这些依赖项在JAR中打包了同名的属性文件。当SpringBoot在执行我的项目JAR时试图从配置文件夹中读取文件时,这会产生任何问题吗?

  • 我试图在Spring中创建我的第一个bean,但是在加载上下文时遇到了一个问题。我在src/main/resources中有一个bean的配置XML文件。 线程“main”org.springframework.beans.factory.BeanDefinitionStoreException异常:IOException解析类路径资源[src/main/resources/beans.XML]中