elasticsearch匹配两个字段
elasticsearch match two fields
如何在 elasticsearch 上获得这个简单的 SQL 查询 运行?
SELECT * FROM [mytype] WHERE a = -23.4807339 AND b = -46.60068
我的语法确实有问题,多匹配查询在我的情况下不起作用,我应该使用哪种查询类型?
您可以使用 and
过滤器来解决这个问题。对于您的示例,类似于:
{
"size": 100,
"query" : {"filtered" : {
"query" : {"match_all" : {}},
"filter" : {"and" : [
"term" : {"a": -23.4807339},
"term" : {"b": -46.60068}
]}
}}
}
确保将查询指向正确的索引和类型。请注意,我将 return 的大小任意指定为 100 - 您必须指定适合您的用例的值。
对于像您这样的查询,bool
过滤器优于 and
过滤器。请参阅 here 有关此建议的完整故事以及为什么被认为更有效。
话虽如此,我会选择这样做:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{"term": {"a": -23.4807339}},
{"term": {"b": -46.60068}}
]
}
}
}
}
}
如何在 elasticsearch 上获得这个简单的 SQL 查询 运行?
SELECT * FROM [mytype] WHERE a = -23.4807339 AND b = -46.60068
我的语法确实有问题,多匹配查询在我的情况下不起作用,我应该使用哪种查询类型?
您可以使用 and
过滤器来解决这个问题。对于您的示例,类似于:
{
"size": 100,
"query" : {"filtered" : {
"query" : {"match_all" : {}},
"filter" : {"and" : [
"term" : {"a": -23.4807339},
"term" : {"b": -46.60068}
]}
}}
}
确保将查询指向正确的索引和类型。请注意,我将 return 的大小任意指定为 100 - 您必须指定适合您的用例的值。
对于像您这样的查询,bool
过滤器优于 and
过滤器。请参阅 here 有关此建议的完整故事以及为什么被认为更有效。
话虽如此,我会选择这样做:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{"term": {"a": -23.4807339}},
{"term": {"b": -46.60068}}
]
}
}
}
}
}