弹性搜索搜索相关

时间:2017-09-21 21:15:43

标签: elasticsearch

假设我们在ES Type中存储了以下3个文档:

文件1:

{
  foo: [
    "c"
  ],
  bar: "bar1"
}

文件2:

{
  foo: [
    "a"
    "b"
  ],
  bar: "bar2"
}

文件3:

{
  foo: [
    "a",
    "b",
    "c"
  ],
  bar: "bar3"
}

我想在ES中进行搜索,以便在给定输入foo: ['a', 'b', 'c', 'd']的情况下,结果应仅返回文档3.这基本上是说,找到{{{{ 1}}数组。

1 个答案:

答案 0 :(得分:1)

你可以使用should和size为1,理想情况下,文档3具有很高的相关性,应该在顶部。和大小1将返回最相关的文档

"size" : 1,
"query": {
    "bool": {
      "should": [
        { "term": {"foo": "a"}},
        { "term": {"foo": "b"}},
        { "term": {"foo": "c"}},
        { "term": {"foo": "d"}},
      ]
}