elasticsearch - Elasticsearch:在字段中获取具有特定值的文档

标签 elasticsearch kibana

我有一个包含重复文本内容的文档的索引,我需要检索具有完全相同的值而不是相似的值的文档。因此,例如,将以下各行视为不同文档的“文本”属性的值:

  • 车撞坏了
  • 车(*)
  • 他驾驶汽车
  • 车(*)

  • 因此,我需要检索的只是两个标有(*)的文档。我试过了:
    GET news/_search
    {
      "_source": ["text"],
      "min_score": 1,
      "query": {
        "simple_query_string" : {
            "query": "The car",
            "fields": ["text"],
            "flags": "NONE",
            "minimum_should_match": "100%"
        }
      }
    } 
    

    但是它总是检索所有4个文档。我也尝试了match_phrase,结果也一样。

    PS:我需要能够同时运行两个查询:一个可以检索4个文档,另一个可以只检索2个文档。

    这是映射:
    {
      "news" : {
        "aliases" : { },
        "mappings" : {
          "tweet" : {
            "properties" : {
              "text" : {
                "type" : "text",
                "fields" : {
                  "keyword" : {
                    "type" : "keyword",
                    "ignore_above" : 256
                  }
                }
              },
              ...
            }
          }
        }
      }
    }
    

    任何的想法?

    谢谢

    最佳答案

    为了完全匹配,您应该在字段的关键字类型上输入elasticsearch的Term Query
    使用此例如。

    {
      "query": {
        "term": {
          "text.keyword": {
            "value": "The car"
          }
        }
      }
    }
    

    上面的查询将仅返回2个结果。但是,如果您想获取所有结果,请执行Match查询
    {
      "query": {
        "match": {
          "text": "The car"
        }
      }
    }
    

    这将返回所有四个结果。

    希望这可以帮助

    关于elasticsearch - Elasticsearch:在字段中获取具有特定值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57290419/

    相关文章:

    python - 2 个 ES 集群或 1

    regex - 使用Elastic Search进行条件查询

    elasticsearch - Elasticsearch -打开Kibana后处于黄色状态

    kibana - Kibana 拆分图上的不同 Y 轴比例

    elasticsearch - 搜索全词

    python - 如何在ElasticSearch中正确使用 “term”过滤器?

    elasticsearch - 为什么代码中的短语无法匹配多值字段?

    elasticsearch - Elasticsearch 日期范围查询

    elasticsearch - 使用Kibana从日志文件中按线程显示事件

    elasticsearch - 无法在Elasticsearch中更新映射