如何查询elasticsearch中的多个字段?

时间:2015-11-16 10:42:34

标签: elasticsearch

我尝试了多字段查询,它工作正常。但我想知道在弹性搜索中通常使用哪些其他选项来查询多个字段?

2 个答案:

答案 0 :(得分:2)

具有多个术语的结构化查询,用于查找精确值,与SQL

相同

https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_multiple_exact_values.html

"bool" : {
                    "must" : [
                        { "term" : { "tags" : "search" } }, 
                        { "term" : { "tag_count" : 1 } } 
                    ]
                }

答案 1 :(得分:1)

例如,请考虑以下sql查询,

SELECT product
FROM   products
WHERE  (price = 20 OR productID = "XHDK-A-1293-#fJ3")
  AND  (price != 30)

在这些情况下,您需要bool过滤器。这是一个复合过滤器,它接受其他过滤器作为参数,将它们组合成各种布尔组合。

查询DSL将是,

GET /my_store/products/_search
{
   "query" : {
      "filtered" : { 
         "filter" : {
            "bool" : {
              "should" : [
                 { "term" : {"price" : 20}}, 
                 { "term" : {"productID" : "XHDK-A-1293-#fJ3"}} 
              ],
              "must_not" : {
                 "term" : {"price" : 30} 
              }
           }
         }
      }
   }
}

请按照以下链接获取文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/combining-filters.html