弹性搜索过滤器

时间:2015-08-28 06:24:17

标签: elasticsearch

我是Elastic search的新手。请帮助我找到要使用Java API编写的过滤器/查询以匹配确切的记录。

Below is the mongodb record .I need to get both the record matching the word 'Jerry' using elastic search.

{
        "searchcontent" : [
                {
                        "key" : "Jerry",
                        "sweight" : "1"
                },{
                        "key" : "Kate",
                        "sweight" : "1"
                },

        ],
        "contentId" : "CON_4",
        "keyword" : "TEST",
        "_id" : ObjectId("55ded619e4b0406bbd901a47")
},
{
        "searchcontent" : [
                {
                        "key" : "TOM",
                        "sweight" : "2"
                },{
                        "key" : "Kruse",
                        "sweight" : "2"
                }

        ],
        "contentId" : "CON_3",
        "keyword" : "Jerry",
        "_id" : ObjectId("55ded619e4b0406ccd901a47")
}

4 个答案:

答案 0 :(得分:3)

如果您想搜索所有字段。 然后你可以做一个匹配_all查询,

POST <index name>/<type name>/_search.
     {
     "query": {
        "match" : {
            "_all" : "Jerry"
            }
        }
    }

这会在所有字段中搜索“Jerry”。

答案 1 :(得分:2)

您需要在多个字段中搜索Multi-Match查询。以下查询将搜索单词&#34; jerry&#34;在两个字段&#34; searchcontent.key&#34;和&#34;关键字&#34;这就是你想要的。

POST <index name>/<type name>/_search
{
   "query": {
      "multi_match": {
         "query": "jerry",
         "fields": [
            "searchcontent.key",
            "keyword"
         ]
      }
   }
}

答案 2 :(得分:0)

没有单一的解决方案,这取决于您如何在弹性搜索中映射数据以及您要编制索引的内容

GET / intu / _settings

您可以使用:查询字符串

如果您不需要组合过滤器,则可以删除bool并且应该。

来自文档:&#34; bool查询采用更多匹配更好的方法,因此每个匹配的must或should子句的得分将被加在一起,为每个文档提供最终的_score &#34;

例如:

GET /yourstaff/_search
{
"query": {
  "filtered": {
     "query": {
        "bool": {
           "should":
              {
                 "query_string": {
                    "query": "jerry"
                 }
              }
        }
     }
  }
 }
}

查看文档:

使用Sense确定您想要的结果

答案 3 :(得分:0)

使用过滤器是一个更好的选择,因为它可以缓存结果。

{
 "query":
 {
  "bool":
  {
   "should":
   [
    {
     "term":
     {
      "searchcontent.key":"jerry"
     }
    },
   {
    "term":
    {
     "keyword":"jerry"
    }
   }
  ]
 }
}
}

https://www.elastic.co/blog/found-optimizing-elasticsearch-searches

建议阅读以便更好地搜索。