我正在试图找出Elasticsearch。 我浏览了整个互联网,我找到的只是基本的例子。
首先,我需要搜索两个字段(field_A,field_B)并返回结果
我设法做到这一点:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"terms": {
"field_A": [
"valueA",
"valueB",
"valueC"
]
}
}
],
"should": [
{
"term": {
"field_B": "valueD"
}
}
]
}
}
}
}
}
现在我需要搜索三个字段(完全匹配)
或类似的东西:
我该怎么做?
答案 0 :(得分:1)
您可以使用elasticsearch的布尔(和/或)过滤器。
以下是您的第一个要求的简单用例,您可以根据其他要求为过滤器建模。
POST /_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"or": {
"filters": [
{
"and": {
"filters": [
{
"term": {
"fieldA": "value_a"
}
},
{
"term": {
"fieldB": "value_b"
}
},
{
"term": {
"fieldC": "value_c"
}
}
]
}
},
{
"and": {
"filters": [
{
"term": {
"fieldA": "value_a1"
}
},
{
"term": {
"fieldB": "value_b1"
}
},
{
"term": {
"fieldC": "value_c1"
}
}
]
}
}
]
}
}
}
}
}
对于你的要求类型使用和过滤器和或过滤器似乎很好,但总是喜欢bool过滤器(如你所做),如果你可以使用它。
参考;
希望这有帮助!!感谢