Elasticsearch:使用doc的属性值作为查询的一部分进行搜索

时间:2016-02-26 18:57:56

标签: elasticsearch

我有一个数据集,其中每个文档都有一个'Name'属性,可以在另一个属性'Text'中使用,例如

{
  name: "Bob",
  text: "Put a fish on Bob. This fish grants Bob the power of Fish-Slapping Dance."
},
{
  name: "Cam"
  text: "Put a hammer on Cam. This hammer grants Cam the power of Hammertime."
}

现在,我必须做一些类似'授予权力'的搜索,这肯定会把这些视为可能的匹配,但我希望能够做到'授予权力' ',其中〜被定义为该文档的特定属性,在本例中为'Name'。因此,当它搜索第一个文档时,它将搜索“授予Bob的权力”,第二个,“授予Cam的权力”。

我不需要该属性是动态的,因为在我的用例中它永远不会改变,但我没有找到任何允许我在搜索查询中使用文档属性值的东西。

1 个答案:

答案 0 :(得分:0)

我建议在模型中添加更多字段。类似的东西:

{
  name: "Cam"
  text: "Put a hammer on Cam. This hammer grants Cam the power of Hammertime.",
  who: "cam"
  action: "grant",
  thing: "power"
  what: "hammertime"
}

然后您可以查询以下内容:

GET devdev/audittrail/_search
{
  "query": {
    "filtered": {
      "filter": {
        "and": {
          "filters": [
            {
              "term": {
                "who": "cam"
              }
            },
            {
              "term": {
                "action": "grant"
              }
            },
            {
              "term": {
                "thing": "power"
              }
            },
            {
              "term": {
                "what": "hammertime"
              }
            }
          ]
        }
      }
    }
  }
}