Elasticsearch:按任何字段过滤

时间:2015-11-27 13:42:56

标签: elasticsearch

我在弹性搜索中使用过滤器(我们使用旧版本1.3.1),我需要按任何字段过滤搜索结果。通过查询,可以这样做:

"query": {
  "query_string": {
    "query": "_all:test"
  }
}

但过滤器似乎无法与 _all 语句一起使用。我能做什么?更新的弹性搜索版本会解决我的问题吗?

提前致谢!

PS:我需要搜索确切的值,因此我无法使用查询。查询和过滤器之间存在差异 - 如果您搜索my brown,则可以获得以下结果:

my brown

This is my brown dog.

someone stolen my brown wallet

但过滤器只返回my brown,这就是我需要的。

1 个答案:

答案 0 :(得分:1)

您可能想要了解queries and filters之间的区别。你在那里做的是query string query

如果您确实希望过滤精确的文本标记(如果您不知道“标记”的含义,请在analysis上阅读),并且您的映射设置为{{{ 3}}表现得像你期待的那样尝试这样的事情:

POST /test_index/_search
{
   "query": {
      "filtered": {
         "filter": {
            "term": {
               "_all": "test"
            }
         }
      }
   }
}

另一方面,如果您想允许某些分析(例如,"Test"被标记化为"test"),您可能需要这样做:

POST /test_index/_search
{
   "query": {
      "match": {
         "_all": "Test"
      }
   }
}

以下是我用来玩它的一些代码:

"_all" field