elasticsearch - 使用kibana在elasticsearch的两个字段中搜索

标签 elasticsearch kibana

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

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

...我想得到第二个在"castle"中有title和在"pontivy"中有loc的第二个。我试图简化示例和基础,但要复杂一些。因此,我尝试了该查询,但它似乎不准确(这是一种感觉,很难解释):
GET merimee/_search/?
{
  "query": {
    "multi_match" : {
      "query":    "castle pontivy", 
      "fields": [ "title", "loc" ] 
    }
  }
}

在各个 Realm 进行搜索并获得与所有 Realm 相匹配的一种方法是否正确?

不确定我的问题是否足够清楚,可以根据需要进行编辑。

编辑:

故事是:用户键入“caSTLe pontivy”,我想获得此查询的“最佳”结果,这是第二个,因为它在“title”中包含“caSTLe”,在“loc”中包含“pontivy”。换句话说,我想要在两个字段中都具有最佳结果的结果。

最佳答案

就像其他发布的建议一样,您可以使用 bool(boolean) 查询,但是对于您的用例来说可能不起作用,因为您有一个要与多个字段一起查询的搜索框。

我建议您查看一个简单查询字符串查询,因为它可能会为您提供所需的功能。另请: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,可能不会为您提供预期的结果。

值得尝试使用此查询类型的其他选项。您还可以探索使用查询字符串查询,因为它可以提供更大的灵活性,但是“简单查询字符串”一词在大多数情况下都可以很好地工作。

关于elasticsearch - 使用kibana在elasticsearch的两个字段中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52294109/

相关文章:

elasticsearch - elasticsearch:具有相同集群名称的两个节点具有两个不同的集群uuid

linux - 当 redis 和 elasticsearch 等服务被多个其他服务使用时,您是否应该为它们创建单独的 docker 容器?

elasticsearch - 将类型名称传递给ElasticClient对象Nest

ruby-on-rails - ElasticSearch Rails - 设置自定义分析器

用于 elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

c# - 使用 NEST 的 ElasticSearch 索引/插入失败

elasticsearch - Elasticsearch:是新类型还是新索引?

kibana - 无法使用 systemctl 启动 kibana.service

elasticsearch - Logstash grok模式字段未出现在Kibana中

elasticsearch - 日期直方图中的 Kibana 4 时间窗口