Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在弹性搜索中匹配数组,而不是循环搜索_Javascript_Json_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Javascript,Json,elasticsearch" /> elasticsearch,Javascript,Json,elasticsearch" />

Javascript 在弹性搜索中匹配数组,而不是循环搜索

Javascript 在弹性搜索中匹配数组,而不是循环搜索,javascript,json,elasticsearch,Javascript,Json,elasticsearch,我有一系列需要在搜索中匹配的项目。此时,我在数组中循环并对每个项目执行如下搜索: var ownerList = ['owner1', 'owner2', 'owner3']; var searchResults = []; for (var i = 0; i < ownerList.length; i ++ { var query = { 'query': { 'bool': { 'must_not':

我有一系列需要在搜索中匹配的项目。此时,我在数组中循环并对每个项目执行如下搜索:

var ownerList = ['owner1', 'owner2', 'owner3'];
var searchResults = [];

for (var i = 0; i < ownerList.length; i ++ {

    var query = {
        'query': {
            'bool': {
                'must_not': {
                    'match': {'deleted': 'true'}
                },
                'must': [
                    {'match': {'owner': ownerList[i]}},
                    {'match': {'privacy': 'Public'}}
                ]
             }
         }
    };

    function doSearch(query) {
      //do search here
      searchResults.push(result);
    }
}
var-ownerList=['owner1','owner2','owner3'];
var搜索结果=[];
对于(变量i=0;i
如何将数组放入查询中,并在没有循环的情况下执行搜索

我知道这可能会奏效,但我一直无法成功实施

ownerList数组中的项是包含数字、破折号和小写字母的随机字符串


谢谢!

您可以对不同的值使用OR(
部分)。 诸如此类:

var ownerCondition = [];
for (var i = 0; i < ownerList.length; i ++ {
    ownerCondition.push( "{'match': {'owner': " + ownerList[i] + "}}" );
};

var query = {
    'query': {
        'bool': {
            'must_not': {
                'match': {'deleted': 'true'}
            },
            'should': ownerCondition,
            'must': [
                {'match': {'privacy': 'Public'}}
            ]
         }
     }
};
var-ownerCondition=[];
对于(变量i=0;i
对于,您需要将您的所有者字段映射为未分析的
,有关更多信息,请参阅部分。之后,您可以将数组直接传递到
术语过滤器

var ownerList = ["605ec41f-f32a-4f6f-a882-1a6d5379f9ab","006e5c63-c021-4341-8d15-b7071f54b6bf"]

var query = {
  "query": {
    "bool": {
      "must_not": {
        "match": {
          "deleted": "true"
        }
      },
      "must": [
        {
          "terms": {
            "owner": ownerList
          }
        },
        {
          "match": {
            "privacy": "Public"
          }
        }
      ]
    }
  }
}
现在,如果您想匹配abcd-1234以匹配abcd-1234,则需要为您的
所有者
字段使用


希望这有帮助

您能给我们看一些示例字符串吗?您是在寻找精确匹配还是部分匹配,例如,如果您有像
solar energy
这样的字符串,您希望
solar
energy
匹配还是只匹配
solar energy
?这里有两个示例字符串:605ec41f-f32a-4f6f-a882-1a6d5379f9ab,006e5c63-c021-4341-8d15-b7071f54b6bf。我需要精确匹配。谢谢:)这看起来是可行的。我对Elastic还不太熟悉,所以刚刚尝试了新的查询结构,但没有更新映射,没有得到任何点击。这是预期的吗?我正在使用Elastic搜索我的Firebase数据库。你能提供一些关于如何添加映射的建议吗?谢谢,预计你不会得到任何结果,因为默认情况下使用ES使用
standard analyzer
terms filter
正在查找确切的标记,顺便问一下,您是如何创建索引的?您是否使用了
curl
命令?虽然我从未使用过Firebase手电筒,但我查看了该项目,我猜它仅用于搜索,对吗?是的,我认为仅用于搜索。如果我理解正确回答您的问题,我在Flashlight应用程序文件第63行的paths数组中配置了索引。这看起来正确吗?感谢againI尝试了这个:
curl-XPUT localhost:9200/firebase-d'{“mappings”:{“post”:{“owner”:“not_analysis”}}}
但是得到了
{“error”:“IndexAlreadyExistsException[[firebase]已存在],“status”:400}
。您已经非常接近了。首先您必须删除索引,运行
curl-XDELETE”http://localhost:9200/firebase/“
,然后创建一个像这样的新索引
curl-XPUT”http://localhost:9200/firebase/'-d'{“映射”:{“post”:{“属性”:{“所有者”:{“类型”:“字符串”“,”索引“:“not_analysisted”}”
。是文档。