gpt4 book ai didi

elasticsearch - 默认情况下,elasticsearch 中的文本字段禁用 Fielddata

转载 作者:行者123 更新时间:2023-11-29 02:56:05 24 4
gpt4 key购买 nike

我从 elasticsearch 2.x 更新到 5.1 时遇到问题。但是,我的一些数据在较新的 elasticsearch 中不起作用,因为这个“默认情况下在文本字段上禁用字段数据”https://www.elastic.co/guide/en/elasticsearch/reference/5.1/fielddata.html在 2.x 之前,它似乎已启用。

有没有办法让 fielddata 自动启用文本字段?

我试过这样的代码

curl -XPUT http://localhost:9200/_template/template_1 -d '
{
"template": "*",
"mappings": {
"_default_": {
"properties": {
"fielddata-*": {
"type": "text",
"fielddata": true
}
}
}
}
}'

但看起来 elasticsearch 不理解字段名称中的通配符。对此的临时解决方案是我每 30 分钟运行一次 python 脚本,扫描所有索引并将 fielddata=true 添加到新字段。

问题是我在 elasticsearch 中有像“this is cool”这样的字符串数据。

curl -XPUT 'http://localhost:9200/example/exampleworking/1' -d '
{
"myfield": "this is cool"
}'

当尝试汇总时:

curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield"
}
}
}
}'

“Fielddata 在文本字段上默认禁用。在 [myfield] 上设置 fielddata=true”

elasticsearch 文档建议使用 .keyword 而不是添加 fielddata。但是,这并没有返回我想要的数据。

curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield.keyword"
}
}
}
}'

返回:

  "buckets" : [
{
"key" : "this is cool",
"doc_count" : 1
}
]

这是不正确的。然后我添加 fielddata true 并且一切正常:

curl -XPUT 'http://localhost:9200/example/_mapping/exampleworking' -d '
{
"properties": {
"myfield": {
"type": "text",
"fielddata": true
}
}
}'

然后聚合

curl 'http://localhost:9200/example/_search?pretty=true' -d '
{
"aggs": {
"foobar": {
"terms": {
"field": "myfield"
}
}
}
}'

返回正确结果

  "buckets" : [
{
"key" : "cool",
"doc_count" : 1
},
{
"key" : "is",
"doc_count" : 1
},
{
"key" : "this",
"doc_count" : 1
}
]

如何将此 fielddata=true 自动添加到所有文本字段的所有索引?这可能吗?在 elasticsearch 2.x 中,这是开箱即用的。

最佳答案

我会自己回答

curl -XPUT http:/localhost:9200/_template/template_1 -d '
{
"template": "*",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"strings2": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"fielddata": true
}
}
}
]
}
}
}'

这就是我想要的。现在所有索引都有默认设置 fielddata true

关于elasticsearch - 默认情况下,elasticsearch 中的文本字段禁用 Fielddata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41704450/

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