我有一个用例,它有点类似模板的ES示例,其中我希望分析某些字符串,而某些字符串不需要分析。
我的文档字段没有这样的约定,并且决策是基于外部模式做出的。所以目前我的流程是:
ORIGINALNAME_analyzed
这将处理分析/非分析问题,这要感谢我设置的dynamic_template,但是现在用户不知道分析了哪些字段,所以他无法轻松地编写查询,因为他不知道字段的名称。
我想使用字段名别名,但显然ES不支持它们。还有什么其他的机制,我可以用在这里,比如指数化后的字段重命名或者其他什么吗?
例如,这条古老的线提到field.sub.name可以作为name被查询,但我猜想这已经改变了,因为我无法让它工作,所以不久前他们不允许以.的名字命名?
发布于 2016-01-06 08:37:31
让用户只创建具有原始名称的查询。我相信您有一些代码可以将这个用户查询转换为Elasticsearch查询。在转换到Elasticsearch查询时,不要单独使用用户提供的字段名,而是同时使用字段名ORIGINALNAME和ORIGINALNAME_analyzed。如果使用的是match查询,请将其转换为multi_match。如果使用的是term查询,请将其转换为bool should查询。我想你知道我要怎么做了。
Elasticsearch不会介意某个字段不存在。如果已经在原来的名称中添加了_analyzed的字段,这可能是一个问题。但也有一些技巧可以修正。
https://stackoverflow.com/questions/34628613
复制相似问题