ElasticSearch AngularJS Client - 当我在搜索结果中包含空格时不正确

时间:2014-04-15 13:30:46

标签: elasticsearch

我是ElasticSearch的新手。我发现当我用“2”搜索它时会给出以下记录,但是当我搜索“2升”时它会得到空的结果。似乎ElasticSearch Server没有考虑单词之间的空格。

2升的苏橙质量风味可以ERP2

任何人都可以帮助我,我需要改变什么吗?

谢谢。

我的索引JSON中的一个字段

产品详细信息:2升的苏橙质量风味可以ERP2

ElasticSearch AngularJS客户端代码。

EsConnector.controller('QueryController', function($scope, es) {
 $scope.change = function() {
console.log($scope.searchProduct);

// search for documents
    es.search({
    index: 'test_index',
    size: 50,
    body: {
    "query":
        {
            "regexp": {

               "productDetail":$scope.searchProduct+".*",
            } ,
            "analyzer": "whitespace"
        },
    }

    }).then(function (response) {
      $scope.hits = response.hits.hits;
    });
}
});

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用简单的查询字符串请求,而不是regexp;将查询更改为$ scope.searchProduct +“*”。
  2. “空白分析器”将您的查询分解为空格 - 这意味着,elasticsearch将使用术语“suso”和“orange”查找文档,查询字符串为“suso orange”。
  3. 你没有提到的另一个重要的事情是指数分析器;它是告诉elasticsearch如何在以后搜索的术语上破坏文档字段以及如何“预处理”它们的设置 - 例如,小写或将一个符号更改为另一个符号。