使用 Nest

如何解决使用 Nest

我使用 nest 的连接设置如下:

    var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
    var settings = new ConnectionSettings(connectionPool,new InMemoryConnection());
    settings.disableDirectStreaming(true); // needed to see good looking debug log on insert
    settings.DefaultIndex(Index);
    Client = new Elasticclient(settings);

我希望使用 new InMemoryConnection() 查询 nest - 更改 Azure Cloud 函数内的数据。

奇怪的是,调试日志看起来很有希望索引:

    /*
    var res = await Client.IndexManyAsync(response.Elements,Index); //
    Console.WriteLine(res.Debuginformation);
    */
    /*
    var res = await Client.IndexAsync(response,i => i.Index(Index)); // Index = "data"
    Console.WriteLine(res.Debuginformation); // <--
    */

并在插入后直接记录计数为 0:

// var anyDocs = await Client.CountAsync<OverpassElement>(c => c.Index(Index));
   var anyDocs = await Client.CountAsync<OverpassElement>(c => c);
   Console.WriteLine("count: " + anyDocs.Count);

..但是整个 json 数据随着插入被记录。

插入后为什么我无法计数(以便我可以在下一步中搜索)?


其实我明白:

从 POST 上成功 (200) 低级别调用构建的无效 nesT 响应:/data/_doc

0 插入处有 IndexResponse 项。

数据 属于 Element,类似于包含 4221 个此类项目的数组的以下部分:

{
    "type": "relation","id": 8353694,"timestamp": "2018-06-04T22:54:27Z","version": 1,"changeset": 59551528,"user": "asdf2","uid": 1416503,"members": [
      {
        "type": "way","ref": 89956942,"role": "from"
      },{
        "type": "node","ref": 1042756547,"role": "via"
      },{
        "type": "way","ref": 89956938,"role": "to"
      }
    ],"tags": {
      "restriction": "no_left_turn","type": "restriction"
    }
  },

解决方法

ElasticSearch 与 NoSql 数据存储有很多相似之处。在这种情况下,默认情况下不保证“写后读”。当索引 API 调用返回成功时,并不意味着“此文档现在可供搜索”;这意味着“ElasticSearch 已接受您的文档,它很快可用于搜索”。 ElasticSearch 默认使用最终一致性。

但是,这在测试过程中会很烦人。所以 ElasticSearch 有一个 Refresh API ,它本质上只是阻塞,直到所有已经索引的文档都可用于搜索。我强烈建议您不要在生产中调用它;仅在测试代码中。

,

我不知道 Nest 是什么,但我敢打赌 100 美元,如果它使用事务概念,也许您应该提交它以正确查看计数?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?