【问题标题】:Search in two fields on elasticsearch with kibana使用 kibana 在 elasticsearch 上的两个字段中搜索
【发布时间】:2018-09-13 08:46:06
【问题描述】:

假设我有一个包含两个字段的索引:titleloc,我想在这两个字段中搜索并获得“最佳”匹配。所以如果我有三个项目:

{"title": "castle", "loc": "something"},
{"title": "something castle something", "loc": "something,pontivy,something"},
{"title": "something else", "loc": "something"}

...我想获得第二个在其title 中具有"castle" 和在其loc 中的"pontivy"我试着简化了例子和基础,有点复杂。所以我尝试了这个查询,但似乎不准确(这是一种感觉,不太容易解释):

GET merimee/_search/?
{
  "query": {
    "multi_match" : {
      "query":    "castle pontivy", 
      "fields": [ "title", "loc" ] 
    }
  }
}

在各个字段中搜索并获得与所有字段匹配的正确方法吗?

不确定我的问题是否足够清楚,如果需要,我可以编辑。

编辑:

故事是:用户输入“castle pontivy”,我想得到这个查询的“最佳”结果,这是第二个,因为它在“title”中包含“castle”,在“loc”中包含“pontivy” .换句话说,我想要在两个领域都有最好结果的结果。

【问题讨论】:

  • 您可以尝试 2 匹配,然后使用逻辑 AND 运算符
  • @Saramali 谢谢!我不确定是否理解,您可以发表您的评论作为答案吗?

标签: elasticsearch kibana


【解决方案1】:

正如其他帖子所建议的那样,您可以使用 bool 查询,但这可能不适用于您的用例,因为您有一个要查询多个字段的搜索框。

我建议查看简单查询字符串查询,因为它可能会为您提供您正在寻找的功能。见:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html

所以你可以做类似的事情:

{
  "query": {
    "simple_query_string" : {
        "query": "castle pontivy",
        "fields": ["title", "loc"],
        "default_operator": "and"
    }
  }
}

因此,这将尝试为您提供与这两个字段中的任何一个术语都匹配的最佳文档。默认运算符在此处设置为 AND,否则它是 OR,可能不会给您预期的结果。

也值得尝试其他可用于此查询类型的选项。您还可以探索使用 Query String 查询,因为它提供了更大的灵活性,但 Simple Query String 术语在大多数情况下都非常有效。

【讨论】:

    【解决方案2】:

    这可以通过使用布尔类型的查询然后匹配字段来完成。

      GET _search
      {
       "query": 
        {
         "bool": {"must": [{"match": {"title": "castle"}},{"match": {"loc": "pontivy"}}]
        }
       }
      }
    

    【讨论】:

    • 谢谢!它不适用于我的情况,因为实际查询是 castle pontivy 所以我不知道哪个单词必须匹配哪个字段...抱歉,如果不清楚...
    • 我不明白。您要匹配哪些字段以及匹配哪些值。
    • 对不起。故事:用户键入“castle pontivy”,我想获得此查询的“最佳”结果,这是第二个,因为它在“title”中包含“castle”,在“loc”中包含“pontivy”。换句话说,我想要在两个领域都有最好结果的结果。可能是傻了,我是弹性搜索的初学者
    • 我不明白。这两个字段都可以有 2 个可能的值,这些值将包含在最佳结果中?
    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多