我尝试了多字段查询,它工作正常。但我想知道在弹性搜索中通常使用哪些其他选项来查询多个字段?
答案 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