我理解如何为任何索引和类型构建映射。但是,我想要一个字段my_field_2
和PUT /address_index
{
"mappings":{
"address":{
"properties":{
"state":{
"type":"string",
"fields":{
"raw":{
"type":"string",
"index":"not_analyzed"
}
}
}
}
}
}
}
,不会分析将来会创建的所有索引和类型。
<html>
<head>
<script>
/* Event fired on the drag target */
function dragStart(event) {
event.dataTransfer.setData("Text", event.target.id);
}
/* Events fired on the drop target */
function allowDrop(event) {
event.preventDefault();
}
function drop(event) {
event.preventDefault();
var data = event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(data));
document.getElementById("submit").submit();
}
</script>
</head>
<body>
<form action="page1.php" method="post" id="submit"></form>
<ul class="link">
<li ondragstart="dragStart(event)" draggable="true" id="dragtarget">500/</li>
</ul>
<div class="rect2" ondrop="drop(event)" ondragover="allowDrop(event)">
<span class="amnt"> value here </span>
</div>
</body>
</html>
我还在其中一个链接中看到了如何为所有strings做的事情。但是,我无法仅为上述字段添加它。
我将在Java中实现它。然而,只有DSL JSON才是不错的开端。
答案 0 :(得分:0)
您可以通过创建一个模式为“*”的index template来实现此目的,这意味着它将适用于您将来创建的所有索引,并在那里定义此映射。
80
现在您可以使用任何名称创建索引,此映射将适用于该索引。
PUT 127.0.0.1:9200/_template/stacktest
{
"template": "*",
"settings": {
"number_of_shards": 1
},
"mappings": {
"address": {
"properties": {
"state": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
PUT 127.0.0.1:9200/testindex/
请注意, index:not_analyzed 部分已转换为关键字数据类型,因为字符串已被弃用。如果您使用的是5.x版,则应使用text和keyword。
编辑以解决您的评论
要使其适应您提到的特定两个字段,以下请求将创建模板:
GET 127.0.0.1:9200/testindex/_mapping
{
"testindex": {
"mappings": {
"address": {
"properties": {
"state": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
}
}
如果您现在将文档索引到新索引中,那么对于任何类型的文档将不会分析这两个字段,将分析任何其他字符串字段,这是我理解您的原始文档的方式问题
{
"template": "*",
"settings": {
"number_of_shards": 1
},
"mappings": {
"_default_": {
"properties": {
"my_field_1": {
"type": "string",
"index": "not_analyzed"
},
"my_field_2": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
现在检查映射并注意区别:
PUT 127.0.0.1:9200/testindex/address
{
"my_field_1": "this is not_analyzed",
"my_field_2": "this is not_analyzed either",
"other_field": "this however is analyzed"
}
PUT 127.0.0.1:9200/testindex/differenttype
{
"my_field_1": "this is not_analyzed",
"my_field_2": "this is not_analyzed either",
"other_field": "this however is analyzed"
}