我的索引中有这样的文件:
{
"field" : "a, b, c, d, e"
}
字段值是由数组到字符串函数制成的字符串。因此,并非每个文档都具有相同的字符串,但每个文档都至少具有相同"a, b"
的值。
现在我想要一个匹配两种文档的查询:
仅(完全)"a, b"
作为字段值的文档或在该字段中包含至少两个搜索词的文档。
基本上我的问题是,如果字段被分析,我无法满足第一个条件,如果字段未被分析,我无法满足第二个条件。有没有将字段克隆为 not_alanyzed 的解决方案?
如果我将该字段克隆到未分析的字段(在代码示例 field1 中),我可以使用此查询。我觉得这个查询对于成就来说太复杂了......:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"or": [
{
"term": {
"field1": "a, b"
}
},
{
"and": [
{
"term": {
"field": "c"
}
},
{
"term": {
"field1": "d"
}
}
]
}
]
}
}
}
}