我的用例有点类似dynamic_template的ES示例,我想要分析某些字符串,而不是。
我的文档字段没有这样的约定,并且基于外部模式做出决定。所以目前我的流程是:
ORIGINALNAME_analyzed
由于我设置了dynamic_template,这将处理已分析/未分析的问题,但现在用户并不知道哪些字段被分析,因此他没有简单的方法来编写查询,因为他没有这样做。不知道该字段的名称是什么。
我想使用字段名称别名,但显然ES并不支持它们。是否还有其他我缺少的机制我可以在索引之后使用字段重命名等其他机制?
例如this ancient thread提到field.sub.name
只能被name
查询,但是当我们在名称中禁用.
时,我猜这已经改变了因为我不能让它起作用?
答案 0 :(得分:1)
让用户只使用原始名称创建查询。我相信你有一些代码可以将这个用户查询转换为Elasticsearch查询。转换为Elasticsearch查询时,不使用用户单独提供的字段名称,而是使用字段名称ORIGINALNAME
和ORIGINALNAME_analyzed
。如果您使用match
查询,请将其转换为multi_match
。如果您使用term
查询,请将其转换为bool
should
查询。我想你会得到我的目标。
如果字段不存在,Elasticsearch不会介意。如果已经在其原始名称中附加了_analyzed
的字段,则可能会出现问题。但也有一些技巧可以解决。