因此ElasticSearch有terms查询,它允许我提供多个值并返回一个文档列表,其中字段X与这些值中的任何一个匹配。
但是我想对match_phrase做同样的事情--也就是说,返回字段X中包含一个不区分大小写的匹配项的文档。我目前使用一个or过滤器(见下文)来做这件事。但是,考虑到terms已经做了类似的事情,这似乎是一种非常冗长的方式来做我想要做的事情。
当前方法
在一个字段中搜索三个值中的一个的查询应该有33行长,这似乎很荒谬。
{
"query": {
"filtered": {
"filter": {
"or": {
"filters": [
{
"query": {
"match_phrase": {
"myField1": "My first search phrase"
}
}
},
{
"query": {
"match_phrase": {
"myField1": "My second search phrase"
}
}
},
{
"query": {
"match_phrase": {
"myField1": "My third search phrase"
}
}
}
]
}
}
}
}
}
3条答案
按热度按时间1tuwyuhd1#
经过一个漫长的夜晚试图弄清楚这一点我自己想出了这个:
参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
2guxujil2#
查询字符串在这里会很有帮助
wnrlj8wa3#
ElasticSearch域特定语言(DSL)中的查询如下所示:
要轻松了解此类内容,请使用Kibana界面:
(In此示例myField1是platform_id,搜索短语是“GPL***”)