我在elasticsearch中有以下映射:
{
"doc": {
"properties": {
"fileContent": {
"properties": {
"dimension": {
"properties": {
"jurisdiction": {
"type": "string"
},
"language": {
"type": "string"
},
"region": {
"type": "string"
},
"trueValue": {
"type": "string"
}
}
},
"dynamicGeneratedProperty1": {},
"dynamicGeneratedProperty2": {},
"dynamicGeneratedPropertyN": {}
}
}
}
}
}
我正在尝试配置elasticsearch以仅从 fileContent 中索引维属性,但动态生成的其他属性,我不想被索引。
我已尝试过以下配置,但似乎无法正常运行:
curl -XPUT 0:9200/river1/doc/_mapping -d '
{
"doc": {
"properties": {
"fileContent": {
"type": "object",
"store": true,
"enabled": false,
"properties": {
"dimension": {
"type": "object",
"store": true,
"enabled": true
}
}
}
}
}
}
'
它从父属性应用“enabled”:false 配置,即 fileContent ,它忽略了子属性配置,它告诉索引< EM>尺寸
我知道还有一些模板配置,您可以根据定义的模板告诉弹性索引属性,您可以在其中指定某种正则表达式:https://www.elastic.co/guide/en/elasticsearch/reference/0.90/indices-templates.html。但我不知道如何正确使用它。
我正在使用相当旧版本的elasticsearch,0.93。
非常感谢任何帮助。
答案 0 :(得分:0)
我找到了这个问题的答案。解决方案是对 fileContent 对象使用动态属性设置为 false 。以下是它的文档:https://www.elastic.co/guide/en/elasticsearch/reference/0.90/mapping-dynamic-mapping.html
因此,最终配置应如下所示:
<ul>
<li>change_password</li>
<li>update_profile</li>
</ul>
<h3> The result </h3>
<div id="theContent"></div>
<script type="text/javascript">
var listClick$ = Rx.Observable.create(function(observer){
$('li').click(function(){
let pageName = $(this).html();
observer.next(pageName);
});
}).startWith('change_password').flatMap(function(pageName){
return Rx.Observable.fromPromise($.getJSON('http://localhost:3000/settings/'+pageName));
});
listClick$.subscribe(function(gottenJson){
$('#theContent').html(gottenJson.page);
});
</script>
这不允许elasticsearch在 fileContent 对象中索引和添加任何其他属性,而维度属性也可以动态填充和索引。< / p>