gpt4 book ai didi

java - Spring-Data-Elasticsearch 设置 : Spring can't find config file?

转载 作者:行者123 更新时间:2023-11-29 02:50:46 25 4
gpt4 key购买 nike

借助 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,当我使用 curl 检查我的映射时,我没有得到我在 elasticsearch_config.json 中定义的所有映射:

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

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

感谢您的帮助,谢谢!

注意事项:我找到了 this可能有效的解决方案,但是:
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.jsonmappings.json

我的项目/src/main/ressources架构:

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

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

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

代替:

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

只写在 mappings.json 中:

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

settings.json 也应该这样做

关于java - Spring-Data-Elasticsearch 设置 : Spring can't find config file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31992274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com