首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义动态映射字段名更改

自定义动态映射字段名更改
EN

Stack Overflow用户
提问于 2016-01-06 08:29:22
回答 1查看 333关注 0票数 0

我有一个用例,它有点类似模板的ES示例,其中我希望分析某些字符串,而某些字符串不需要分析。

我的文档字段没有这样的约定,并且决策是基于外部模式做出的。所以目前我的流程是:

  • 我从DB获取输入文档。
  • 我获得了学徒模式(相同的数据库,目前使用logstash进行导入)
  • 我相应地调整文档中的名称(使用logstash的ruby ):
    • 如果不分析,我就不改名字
    • 如果进行分析,我将其更改为ORIGINALNAME_analyzed

这将处理分析/非分析问题,这要感谢我设置的dynamic_template,但是现在用户不知道分析了哪些字段,所以他无法轻松地编写查询,因为他不知道字段的名称。

我想使用字段名别名,但显然ES不支持它们。还有什么其他的机制,我可以用在这里,比如指数化后的字段重命名或者其他什么吗?

例如,这条古老的线提到field.sub.name可以作为name被查询,但我猜想这已经改变了,因为我无法让它工作,所以不久前他们不允许以.的名字命名?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-06 08:37:31

让用户只创建具有原始名称的查询。我相信您有一些代码可以将这个用户查询转换为Elasticsearch查询。在转换到Elasticsearch查询时,不要单独使用用户提供的字段名,而是同时使用字段名ORIGINALNAMEORIGINALNAME_analyzed。如果使用的是match查询,请将其转换为multi_match。如果使用的是term查询,请将其转换为bool should查询。我想你知道我要怎么做了。

Elasticsearch不会介意某个字段不存在。如果已经在原来的名称中添加了_analyzed的字段,这可能是一个问题。但也有一些技巧可以修正。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34628613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档