1

我在 Elasticsearch 中收集了一个数据库,我没有通过 ID 来识别它们,而是通过标题来识别它们。因此,每种类型的标题都不相同。

我尝试过,must => match_phrase但它让我得到了不止一个回报。可能会调用"Document 1"某些东西,也可能会调用其他东西"Document 1,2,3"。因此,它会通过执行返回多个结果match_phrase

假设我有 5 个文件名为:

  1. 文档示例 1
  2. 示例 1
  3. 1 文档示例
  4. 文档示例 1 和 2
  5. 文档示例

我应该发送什么请求只返回例如:"Document example"

我尝试了这种搜索的不同变体127.0.0.1:9200/index/type/_search

{
    "query":{
        "match_phrase": {
            "title":"Document example"
        }
    }
}

所以我想知道如何检查或搜索确切的解析并只得到一个或零个结果作为回报?

编辑

127.0.0.1:9200/myindex/mytype/_mapping返回这个:

{
  "myindex": {
    "mappings": {
      "mytype": {
        "properties": {
          "category": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "date": {
            "type": "date"
          },
          "link": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "size": {
            "type": "long"
          },
          "source": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "title": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}
4

1 回答 1

1

只需在以下位置使用term过滤器(完全匹配)title.keyword

{
  "query": {
    "term": {
      "title.keyword": {
        "value": "Document example"
      }
    }
  }
}
于 2017-05-12T11:23:46.357 回答