我想为我的索引更新elasticsearch中的默认映射。但是所有的文档都指出我们必须为更新映射提供类型。问题是我有很多索引类型,它们是动态创建的,就像新类型的文档出现时一样。所以最好的处理方法是默认映射类型。因为我不必为每个类型定义映射。但现在我无法更新我的索引默认映射。如果可能的话,请告诉我?
我使用默认映射如下:
我创建了索引,指定了_default_
映射。在本例中,我只有一个字段,但我希望确保它不会被分析(因此我可以跨类型进行分面处理,例如):
curl -XDELETE "http://localhost:9200/test_index"
curl -XPUT "http://localhost:9200/test_index" -d'
{
"mappings": {
"_default_": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'
然后我创建了两个文档,每个文档都是不同类型的:
curl -XPUT "http://localhost:9200/test_index/doc_type1/1" -d'
{ "title": "some text" }'
curl -XPUT "http://localhost:9200/test_index/doc_type2/2" -d'
{ "title": "some other text" }'
因此将动态生成每个类型的映射,并且将包括“title”
的默认映射。我们可以通过查看映射来看出这一点:
curl -XGET "http://localhost:9200/test_index/_mapping"
...
{
"test_index": {
"mappings": {
"_default_": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
},
"doc_type2": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
},
"doc_type1": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
如果我在title
字段上刻面,我将得到我所期望的结果:
curl -XPOST "http://localhost:9200/test_index/_search" -d'
{
"size": 0,
"facets": {
"title_values": {
"terms": {
"field": "title",
"size": 10
}
}
}
}'
...
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0,
"hits": []
},
"facets": {
"title_values": {
"_type": "terms",
"missing": 0,
"total": 2,
"other": 0,
"terms": [
{
"term": "some text",
"count": 1
},
{
"term": "some other text",
"count": 1
}
]
}
}
}
下面是我使用的代码:
这回答了你的问题吗?
编辑:以下是如何更新现有索引的_default_
映射:
curl -XPUT "http://localhost:9200/test_index/_default_/_mapping" -d'
{
"_default_": {
"properties": {
"title": {
"type": "string",
"index": "not_analyzed"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}'
(顺便说一下,我使用了Elasticsearch 1.3.4版本来回答这个问题。)
我对弹性搜索一无所知。所以,如果这是一个愚蠢的问题,请原谅我,我的问题可能已经在其他地方得到了回答,但我找不到。我想使用弹性搜索作为我的网络中PDF和docx的搜索引擎。我使用fscrawler将PDF文件吸收到弹性搜索中。因为我要摄取的文档是几种语言的,所以我想使用n-graming进行词干分析。为此,我想像这样更新我的映射 现在我收到了这个错误信息 {“error”:{“root_cause”
问题内容: 根据文档,我尝试按以下方式更新副本数 这将正确更改现有节点的副本数。但是,当logstash在第二天创建新索引时,number_of_replicas设置为旧值。 有没有一种方法可以永久更改此设置的默认值,而无需更新群集中的所有文件并重新启动服务? 我也尝试过 无济于事。 问题答案: 是的,您可以使用索引模板。索引模板是为集群中创建的新索引设置默认设置(包括映射)的好方法。 索引模板
根据文档,我尝试过如下更新副本的数量 这将正确更改现有节点的副本计数。但是,当logstash在第二天创建新索引时,复制副本的数量设置为旧值。 是否有一种方法可以永久更改此设置的默认值,而无需更新所有的集群中的文件并重新启动服务? 我也试过了 没用。
问题内容: 我正在尝试了解如何在Elasticsearch中更新索引文档。我不明白它是如何工作的?什么是该API指的是在做什么?假设您有一个带有嵌套文档的文档,您需要做什么来更新它? 删除文档然后索引“已更新”版本与普通更新之间有什么区别? 问题答案: 更新请求从Elasticsearch检索源,对其进行修改并将其索引回Elasticsearch。如果您已经具有使用更新的文档副本,则毫无意义。仅索
问题内容: 我在Elasticsearch上遇到问题,我不希望对索引项进行分析。但是elasticsearch有一些默认设置,可以在空间上标记它。因此,我的方面查询未返回我想要的结果。 我读到索引类型的属性应该工作。但是问题是我事先不知道我的文档结构。我会在不知道表结构的情况下将随机MySQL数据库索引到elasticsearch。 我如何设置elasticsearch,使其默认情况下会一直使用,
ES5.5文档给出了一个大容量索引的明确示例: 但它也说 endpoint为/_bulk、/{index}/_bulk和{index}/{type}/_bulk。当提供了索引或索引/类型时,默认情况下将在未显式提供它们的批量项上使用它们。 但我不能让这一切奏效。 > 我尝试了/myindex/bulkendpoint,但元数据中没有指定类型。 我在指定了“_type”:“_default_”的情况