我的ElasticSearch索引中有两个整数字段(我们称它们为int\u col\u 1和int\u col\u 2)和一个字符串字段(str\u col\u 1)。我想返回结果如果
任何整数字段都存在完全匹配
如果(1)不返回任何内容,我希望字符串与模糊逻辑匹配,并返回顶部结果
到目前为止,我所做的是:从任意整数列返回精确匹配。
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "int_col_1:123"
}
}
]
}
}
}
对于字符串,我知道我可以使用以下方法获得模糊匹配:
{
"query": {
"fuzzy": {
"str_col_1": {
"value": "MyStrinK"
}
}
}
}
为了简化它,考虑一下一旦我有了三个条件(分别是int\u col\u 1,int\u col\u 2,str\u col\u 1),我想把它们放在一种方式,如果整数不返回结果,那么就进行字符串模糊匹配。有条件地说:
if exact-match found with int_col_1:
return result
else if exact-match found with int_col_2:
return result
else if fuzzy-match found with str_col_1:
return result**first result only**
我能够得到一个非常简单的解决方案,但我希望这在kql中。它不遵循上面提到的逻辑,以及基于模糊的不匹配str\u col\u 1。
GET my_index/_search?q=int_col_1:123%20int_col_2:456%20str_col_1=MyString
在kql中,有人能帮助理解这个逻辑吗?
暂无答案!
目前还没有任何答案,快来回答吧!