我有这样的文件在我的索引:Elasticsearch精确匹配或查询
{
"field" : "a, b, c, d, e"
}
域值由数组字符串函数做了一个字符串。因此,并非每个文档都具有相同的字符串,但每个文档的值至少为"a, b"
。
现在我想有它匹配2种文档的查询:
文件仅具有(恰好)"a, b"
作为字段值或包含在该领域至少两个searchterms文件。
基本上我的问题是,如果字段得到分析,我不能满足第一个条件,如果字段没有得到分析,我不能满足第二个条件。是否有没有克隆字段为not_alanyzed的解决方案? 。
如果我克隆领域一个没有分析字段(代码示例FIELD1)我可以用这个查询我觉得像这样的查询是实现过于复杂...:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"or": [
{
"term": {
"field1": "a, b"
}
},
{
"and": [
{
"term": {
"field": "c"
}
},
{
"term": {
"field1": "d"
}
}
]
}
]
}
}
}
}
您目前如何满足“在该字段中至少包含两个搜索词的文档”的条件?您可以请发布只有这种条件搜索文档的代码吗?我可能会帮助... – ramseykhalaf
代码示例中的和过滤器正在满足您提到的第二个条件... – MeiSign
您是否设法解决该问题? – ramseykhalaf