我们有一个Elastic Search结构,它可以在multi_match查询中指定字段,如下所示:
"multi_match": {
"query": "find this string",
"fields": ["*_id^20", "*_name^20", "*"]
}
这很好用-除非在某些情况下,例如查询为"Find NOWAK"
。这是因为“ NOW”是日期搜索的保留字,并且字段"*"
与定义为日期的字段匹配。
所以我想做的是忽略与"*_at"
匹配的字段。
有没有办法告诉Elastic Search忽略multi_match查询中的某些字段?
如果答案为“否”,那么接下来的问题是如何逃避搜索词,以免触发关键字
运行版本6.7
答案 0 :(得分:0)
尝试一下:
Exclude a field on a Elasticsearch query
curl -XGET 'localhost:9200/testidx/items/_search?pretty=true' -d '{
"query" : {
"query_string": {
"fields": ["title", "field2", "field3"], <-- add this
"query": "Titulo"
}},
"_source" : {
"exclude" : ["*.body"]
}
}'
答案 1 :(得分:0)
显然答案是“不:没有办法告诉ElasticSearch忽略multi_match查询中的某些字段”
对于我的特定问题,我找到了一种便宜的方法来查找必要的白名单字段(这是在ElasticSearch范围之外执行的,否则我会在此处发布),并在构建查询时将其替换为“ *”
我希望有人能告诉我我错了,但我不认为我是错的。